Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

les méthodes de la classe list de la STL

4 réponses
Avatar
Joseph KHOURY
Bonjour,

J'ai definit la classe

class perso
{ public:
string fname;
string lname;
...
};

je declare:

list<perso> toto;
list<perso> :: iterator it;


Est-ce que les méthodes de la classe list de la STL comme insert, merge et
autres s'utilisent comme dans le cas de la declaration:
list<int>nombre;

Merci de votre aide.

4 réponses

Avatar
syn-ack
oui, par contre tu devrai faire des template. c moi chiant

"Joseph KHOURY" a écrit dans le message news:
40b0aa12$0$13934$
Bonjour,

J'ai definit la classe

class perso
{ public:
string fname;
string lname;
...
};

je declare:

list<perso> toto;
list<perso> :: iterator it;


Est-ce que les méthodes de la classe list de la STL comme insert, merge
et

autres s'utilisent comme dans le cas de la declaration:
list<int>nombre;

Merci de votre aide.




Avatar
Patrick Mézard
Joseph KHOURY wrote:
Bonjour,

J'ai definit la classe

class perso
{ public:
string fname;
string lname;
...
};

je declare:

list<perso> toto;
list<perso> :: iterator it;


Est-ce que les méthodes de la classe list de la STL comme insert, merge et
autres s'utilisent comme dans le cas de la declaration:
list<int>nombre;


Oui, c'est le principe des conteneurs de la STL.

Les différents conteneurs supposent que le types passés en paramètres
ont certaines propriétés, comme d'être copiables par assignation et
construction par exemple. A partir du moment où les types utilisés
implémentent ces opérations avec la même sémantique, ils sont
substituables, et le conteneur peut implémenter ses opérations de la
même manières pour tout ces types. Il exploite du polymorphisme de
compilation.

Les types passés en arguments influent tout de même sur plusieurs choses :
- "L'efficacité" des opérations, au sens très large (la complexité des
opérations reste la même d'un type à l'autre). En gros, les conteneurs
manipulent les instances contenues par valeur. Plus les objets sont
lourds à copier plus leur manipulation sera coûteuse. C'est pour cela
que les "grosses" instances se manipulent généralement via leurs
pointeurs, mais cela entraine d'autres problèmes.

- Les garanties aux exceptions. Les conteneurs de la STL garantissent
certaines propriétés en cas de levée d'exception durant une opération.
Par exemple, si un std::vector<>::push_back jette une exception, alors
l'objet n'a pas été inséré quel que soit son type. Pour certaines
opérations, ces garanties dépendent aussi du comportement des types
utilisés. Si le type peut lancer des exceptions durant une copie alors
std::vector<>::insert laissera le conteneur dans un état valide mais non
spécifié (l'objet pourra avoir été inséré ou pas).

Patrick Mézard

Avatar
Samuel Krempp
le Sunday 23 May 2004 20:41, écrivit :

oui, par contre tu devrai faire des template. c moi chiant


?
des templates de quoi, pour quoi ?

(et note que l'on répond *après* le message cité, et qu'on cite le moins
possible du message)
--
Sam

Avatar
Alexandre
"Samuel Krempp" a écrit dans le
message de news:40b1cc6b$0$12736$
le Sunday 23 May 2004 20:41, écrivit :

oui, par contre tu devrai faire des template. c moi chiant


?
des templates de quoi, pour quoi ?

(et note que l'on répond *après* le message cité, et qu'on cite le moins
possible du message)
--
Sam


je pense qu'il voulait dire des "typedef".