2010-01-09 6 views
0

J'ai une question très basique. Je veux utiliser la liste de la STL au lieu de créer ma propre liste chaînée (mon code est illustré ci-dessous)liste-liée en C++ comment aller à "prochain élément" en utilisant la liste STL

struct myList 
{ 

    myList *next; 
    myList *previous; 
}; 

myList->next = NULL; 

En utilisant la liste STL:

#include <list> 

std::list<int> L; 
L.push_back(1); 

Ma question est, comment accéder au « suivant » élément dans la liste de STL?

Répondre

7

std::list est un récipient. Pour accéder à des nœuds individuels, vous devez utiliser un itérateur.

Par exemple, pour obtenir le nœud principal, vous utilisez

std::list<int>::const_iterator cit = L.begin(); 

Pour passer au nœud suivant, vous utilisez

++ cit; 
+0

Merci beaucoup! – cppb

1

utiliser un itérateur :

std::list<int>::iterator i = L.begin(); 
std::list<int>::iterator i_end = L.end(); 
while(i!=i_end) 
    { 
    ++i; 
    } 
+1

Woah, maintenant c'est un morceau de code incorrect ... –

+0

Yeap, ++ j'étais la clé .. Merci! – cppb

+0

qu'est-ce que ce morceau de code est censé illustrer? –

5

Utilisation std::advance:

std::list<int> mylist; 
... 
int index = 5; 
std::list<int>::iterator ith_iterator = mylist.begin(); 
std::advance(ith_iterator, index); 
int& ith_element = *ith_iterator; 
Questions connexes