La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Traiter des Données avec la STL

Présentations similaires


Présentation au sujet: "Traiter des Données avec la STL"— Transcription de la présentation:

1 Traiter des Données avec la STL
David Saint-Mellion

2 Avantage Les composants de la STL ont été écrits par des spécialistes
Ils sont plus efficaces et qu’un composant “Maison” La librairie STL est standard, son emploi rend les programmes portables

3 L’idée Générale de la STL
On ne se préoccupe pas de la nature de ce que l’on manipule Conteneurs : chargés de Organisation des données Itérateurs : chargés de l ’Accès aux objets Fonctions de <algoritm>: chargées du Traitement

4 L’idée Générale de la STL
Si le programmeur applique la fonction sort() sur un conteneur : d’Entiers, il récupère le conteneur trié d’Images, il obtiendra le conteneur trié. Il devra définir l’opérateur d’infériorité pour dire : “ Qu’est ce qu’une image inférieure ” La fonction s ’applique sur la suite d ’objets et non sur leur nature.

5 Les Conteneurs Des objets stockant des objets du même type
Il organisent l’ensemble des objets en une séquence pour la parcourir 2 familles de conteneurs : de séquence : vector, deque et list Associatifs : set, multiset, map et les multimap

6 Les Conteneurs Deux implémentations en mémoire
Une zone mémoire continue : vector , deque, La liste : les objets sont dispersés dans la mémoire et relié entre eux par un couple de pointeurs ‘précédent ‘ ‘ suivant’

7 Les Conteneurs Tous les conteneurs disposent de 3 fonctions :
begin() renvoie l’itérateur sur le 1er objet end() renvoie l’itérateur juste après le dernier objet empty() renvoie true si le conteneur est vide Le Vector remplace le tableau. Il peut grossir pendant l’exécution

8 Les Itérateurs <Iterator>
Un objet permettant d'accéder aux objets d'un conteneur Supporte l’opération d’incrémentation pour “ passer ” à l’objet suivant Différents itérateurs “ Bidirectional_iterator ” : list, set, multiset, map, multimap “ Random_acces_iterator” : vector, deque

9 Les Itérateurs Adaptateurs
Lier un flux de données à un conteneur, ostream_iterator<int> ecran(cout," "); copy(vec1.begin(),vec1.end(),ecran); Réaliser les opérations d’insertion dans un conteneur copy(istream_iterator<float>(fichierCoteR), istream_iterator<float>(), back_inserter(vecCote) );

10 Les Fonctions <Algorithm>
C’est un jeu de 70 fonctions traitant les algorithmes les plus connus : La copie, La suppression, Le remplacement, La transformation La recherche avec un critère, Le tri

11 Les Fonctions <Algorithm>
S’appliquent à tous les objets ou une partie de 1 ou 2 conteneurs Reçoivent 2 itérateurs définissant la séquence source Parcourent la séquence pour traiter avec la fonction <algorithm> choisie

12 Les Foncteurs <Functional>
Un “foncteur ” est un objet définissant l'opérateur “( )”. Les foncteurs prenant : 1 paramètre sont dites “unaires ”, 2 paramètres sont dits “binaires ” Une fonction “prédicat” est un foncteur qui renvoie un booléen Les fonctions <algoritm> utilisent des foncteurs unaires, binaires ou des prédicats

13 Les Foncteurs <Functional>
Définition d’un foncteur unaire Template<class arg,class result> Struct unary_function { Typedef arg argument_type; Typedef result result_type; }; // Pour une predicat, Result est un bool Le foncteur adaptateur de fonction ptr_fun(--) convertit une fonction “ maison ” en foncteur

14 Les Paires <Utility>
Une «paire» est un couple de 2 données. Elle dispose d’un constructeur et de 2 attributs : first et second Pair 2 données du même type : pair<string, string> personne; personne.fisrt = Durant ; Make_paire : 2 données de type différent make_pair<string, int> personne; cout<<"Age "<<personne.second;

15 Exemple « Trier un Fichier »
1 ifstream fichierCoteR; 2 ofstream fichierCoteW; 3 vector<float> vecCote; 4 ostream_iterator<float> fichierW(fichierCoteW, "\n"); 5 fichierCoteR.open("piece.dat"); 6 copy(istream_iterator<float>(fichierCoteR), istream_iterator<float>(), back_inserter(vecCote); 7 sort(vecCote.begin(), vecCote.end()); 8 fichierCoteR.close(); 9 fichierCoteW.open("piece_t.dat"); 10 copy(vecCote.begin(), vecCote.end(), fichierW);

16 Pour en savoir plus Itérateur, vector, algorithm Tutorial sur la STL
Tutorial sur la STL


Télécharger ppt "Traiter des Données avec la STL"

Présentations similaires


Annonces Google