8. Classes et fonctions paramétrables, Librairie Standard du C++ (STL) Flashcards

1
Q

Les templates

A

permettent de spécifier dans un seul bout de code un ensemble de fonctions ou de classes surchargées (par leur type).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Processus pour obtenir une classe utilisable à partir d’une template

A

l’instanciation de la template.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Les classes et fonctions paramétrables seront utiles pour

A

toutes les abstractions dont le comportement ne change pas en fonction du type.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Les méthodes ne sont plus dans

A

un fichier .cpp mais dans le .h après la déclaration de la classe ou dans un .hpp inclut par le .h.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Classes patron

A

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>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Fonctions patron

comportement est similaire avec

A

les fonctions :
chaque appel d’un patron de fonction avec de nouveaux types d’arguments compile une nouvelle fonction patron.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

L’approche STL

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Composantes principales de STL:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

itérateurs

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Comme avec les pointeurs sur un vecteur C++, l’itérateur peut être

A

incrémenté ou décrémenté pour parcourir le conteneur (iter++ ou iter–).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hiérarchie des itérateurs

A

accès aléatoire
bidirectionel
unidicrectionel avant
d’entrée(lecture)/de sortie(écriture)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Itérateur inverse

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

adaptateurs

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

3 types d’itérateurs d’insertion:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

STL

A

librairie standard de patrons

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

vector

A

bloc de mémoire contigu
accès aléatoire aux éléments
insertions optimisées à la fin

17
Q

deque

A

«double end queue» prononcé «deck» blocs de mémoire contigus
accès aléatoire aux éléments
insertions optimisées au début ou à la fin

18
Q

list

A

liste doublement chaînée,
blocs de mémoire indépendants accès séquentielle aux éléments
insertions et retraits performants partout

19
Q

types de séquence

A

vector deque list

20
Q

type d’association

A

set multiset map multimap

21
Q

type d’adaptateur

A

stack queue priority queue

22
Q

set

A

ensemble ordonné
tous les éléments doivent être différents test d’inclusion très performant insertions et retraits performants
possibilité de parcourir séquentiel

23
Q

multiset

A

ensemble ordonné accepte le dédoublement d’éléments dans la collection.

24
Q

map

A

dictionnaire associant des couples clé/définition toutes les entrées doivent être différentes
test d’inclusion très performant
insertions et retraits performants
possibilité de parcourt séquentiel

25
Q

multimap

A

dictionnaire
accepte le dédoublement des entrées dans la collection

26
Q

stack

A

implantation d’une pile utilisant une séquence (deque par défaut) insertions et retraits performants
insertions et retraits sur le dessus.

27
Q

queue

A

implantation d’une file utilisant une list ou deque
insertions et retraits performants
insertions derrière et retraits devant

28
Q

priority queue

A

implantation d’une file à priorité utilisant une deque
accès performants
retrait de la plus grande valeur

29
Q

Comment accéder les valeurs?

A

Si l’accès aléatoire est important
vector ou deque

Si l’accès séquentiel est suffisant
un des autres conteneurs peut être adapté

30
Q

Ordre dans la collection important?

A

Le conteneur set maintient l’ordre des éléments dans la collection en tout temps.

Appliquer un algorithme de tri après l’insertion en utilisant un vector ou une list pour ordre à un moment donné.

Si l’ordre dans la collection est lié à l’ordre d’insertion,
bons choix : conteneur list ou un adapteur stack, queue.

31
Q

Dimension variable?

A

Si les dimensions varient beaucoup :
olist ou set

Si les dimensions demeurent relativement
fixes :
ovector et deque

32
Q

Estimer la dimension apriori?

A

Si on connaît la dimension qu’atteindra un
contenant,
seul le vector permet une pré-allocation d’un
bloc de mémoire de la bonne dimension.

33
Q

Tester la présence d’un élément?

A

Si on doit fréquemment tester la présence d’un
élément dans la collection,
bons choix : set ou map

La recherche sur ces conteneurs est très efficace alors que sur un vector par exemple, la recherche peut signifier comparer tous les éléments de la collection…

34
Q

Collection indexée ou paire/valeur?

A

Si les clés sont un nombre entre 0 et une
borne supérieure,
utiliser un vector ou un deque.

Dans le cas où la clé est autre chose (caractère, chaîne, type quelconque),
utiliser un map.

35
Q

Position des insertions et des retraits

A

Si les valeurs doivent être insérées et retirées dans le milieu de la collection,
meilleur choix : list
Si les valeurs sont insérées au début,
deque ou list
Si les ajouts et les retraits sont faits à la fin,
bon choix : vector ou l’adapteur stack

36
Q

Les algorithmes génériques

A

Les algorithmes fournis avec STL sont découplés du
conteneur sur lequel ils agissent
o
utilisation des itérateurs.

Tous les conteneurs dans la même catégorie peuvent
utiliser les mêmes algorithmes.

37
Q

avantage

A

La librairie STL est extensible:
oles algorithmes existants fonctionneront sur les nouveaux conteneurs à venir.
oles conteneurs existants supporteront les
nouveaux algorithmes écrits par l’usager.
ode nouveaux algorithmes pourront être écrits et fonctionner sur tous les conteneurs présents et à venir…

38
Q

limite

A

Important : connaître et comprendre les exigences et les
limites de composants de la librairie.
ointervalles spécifiés par deux itérateurs de source différente.
oitérateurs invalidés par une insertion ou un retrait dans le
conteneur.