List et vector

gg -  
 gg -
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...

2 réponses

  1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    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
    1. gg
       
      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
  2. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    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
    1. gg
       
      Merci pour tout
      0