List et vector
Fermé
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...
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:
- List et vector
- List disk - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Liste des maladies et leurs traitements - Télécharger - Bureautique
- Zn-401s code list - Forum Téléviseurs
- Code pour remote control - Forum Téléviseurs
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
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 ?
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 ?
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
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 ?
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 ?
6 mai 2003 à 14:36
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+