8. Classes et fonctions paramétrables, Librairie Standard du C++ (STL) Flashcards
Les templates
permettent de spécifier dans un seul bout de code un ensemble de fonctions ou de classes surchargées (par leur type).
Processus pour obtenir une classe utilisable à partir d’une template
l’instanciation de la template.
Les classes et fonctions paramétrables seront utiles pour
toutes les abstractions dont le comportement ne change pas en fonction du type.
Les méthodes ne sont plus dans
un fichier .cpp mais dans le .h après la déclaration de la classe ou dans un .hpp inclut par le .h.
Classes patron
patron de classe utilisé avec de nouveaux arguments nouvelle classe patron compilée.
déclaration d’un objet de type std::vector<int> et d'un autre de type std::vector<double>
Instanciation de deux classes différentes.
Les objets seront de types différents,
Aucun lien entre les deux (pas même une conversion).</double></int>
Fonctions patron
comportement est similaire avec
les fonctions :
chaque appel d’un patron de fonction avec de nouveaux types d’arguments compile une nouvelle fonction patron.
L’approche STL
Indépendance des algorithmes envers les conteneurs.
Beaucoup d’algorithmes ne dépendent pas d’une implémentation particulière d’une structure de données.
Propriétés fondamentales communes à plusieurs structures de données:
opasser d’un élément à l’autre du début à la fin du conteneur.
Composantes principales de STL:
Algorithmes: définir des procédures de
traitement.
Conteneurs: gérer un ensemble d’espaces
mémoire selon les structures de données.
Itérateurs: procurer à un algorithme une façon
de traverser un conteneur.
itérateurs
Un intervalle spécifié ne contient jamais la borne supérieure:
Ex.: [x, x+10] où x+10 désigne l’endroit passé la fin de l’intervalle.
Les conteneurs définissent un itérateur spécial pour désigner «passé-la- fin» du conteneur.
end() retourne un itérateur pointant à «passé-la-fin» du conteneur.
begin() retourne l’élément de début du conteneur.
Comme avec les pointeurs sur un vecteur C++, l’itérateur peut être
incrémenté ou décrémenté pour parcourir le conteneur (iter++ ou iter–).
Hiérarchie des itérateurs
accès aléatoire
bidirectionel
unidicrectionel avant
d’entrée(lecture)/de sortie(écriture)
Itérateur inverse
parcours des éléments dans l’ordre inverse.
rbegin() et rend() retournent des itérateurs inverses.
o Le premier élément de la séquence sera le dernier et le dernier sera le premier.
Incrémenter fait avancer à rebours dans la séquence.
adaptateurs
permet de transformer un itérateur de sortie en itérateur qui insère des éléments au lieu d’écraser les éléments existants dans un contenant.
3 types d’itérateurs d’insertion:
ol’itérateur front_inserter
insère un élément au début d’un contenant.
ol’itérateur back_inserter
insère un élément à la fin d’un contenant.
ol’itérateur inserter
insère dans un contenant à l’endroit désigné par l’itérateur
passé en argument.
STL
librairie standard de patrons