List et vector

Fermé
gg - 6 mai 2003 à 12:32
 gg - 6 mai 2003 à 15:30
Bonjour, une question toute bete:
Quand on utilise les conteneurs prédéfinis de la librairie STL qui s'appellent "vector", on accede tout naturellement aux iéme élément en faisant Vect[i] où Vect est un vector.
Mon probleme est le suisvant j'utilise "list" qui est très similaire à vector pourtant je ne trouve pas coment aceder aux ième élément !!!!
En regardant l'aide on voit effectivement que l'operateur crochet n'est pas définis! Mais alors comment fait-on? (dépit)
Y at'il une astuce genre list(i) ou list.give(i) ou j'en sai riens?,,,

Merci de vos réponses.

ps: ne me sortez pas qu'il faut redéfinir l'opeérateur crochet, je suis persuadé que c'est implementé quelqupart par défaut...
A voir également:

2 réponses

batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
6 mai 2003 à 13:09
Non, je ne croisd pas que l'opérateur [] soit défini pour la list.

La doc de la STL : www.sgi.com/tech/stl => fo commencer par là...

Une solution
tu veux l'indice n

i=0;
list taliste;

list::const_iterator iter;
iter = taliste.begin();
while(i<n && iter!=taliste.end())
{
++i;
++iter;
}
après cette boucle, tu vérifies que n=i pasque si c pas le cas, ça veut dire que l'indice demandé dépasse la liste... Si n=i alors iter est un pointeur sur l'élément que tu cherches (attention donc à la syntaxe -> et pas .)

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
Ouais merci, j'ai cherché de mon coté et j'e crois avoir aussi trouvé:
Effectivement quand on défini l'itérateur:

list<T>::iterator ITE,

alors il suffit de faire (*ITE) pour acceder à l'élement, c'est tout con!! ou plus précisement *(ITE+i) pour le ième élément.
Merci de ta réponse qui m'a de toute facon éclaieré

A+
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
6 mai 2003 à 15:03
C'est vrai que chui con d'itérer pour atteindre le ième !!! J'ai honte qd je me relis. ;-)

Tu as raison, mais n'oublie pas de faire ITER = taliste.begin(); avant de faire *(ITER+i)...

@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
Merci pour tout
0