1 / 16

Traiter des Données avec la STL

Traiter des Données avec la STL. David Saint-Mellion. 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. L’idée Générale de la STL.

garth
Download Presentation

Traiter des Données avec la STL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 • http://saintmellion.free.fr/cours/C++/stl/iterateur.pdf • http://saintmellion.free.fr/cours/C++/stl/vector.pdf • http://saintmellion.free.fr/cours/C++/stl/algorithm.pdf Tutorial sur la STL • http://w3imagis.imag.fr/Membres/Xavier.Decoret/STL_TUTORIAL/index.html • http://www.developpez.biz/download/stl.pdf

More Related