2011-03-29 15 views
26

Necesito una muestra para recorrer una lista usando C++.Recorrer una lista con un iterador?

+0

solución fácil en Google' ing: http://www.java2s.com/Code/Cpp/List/TraverseaListUsinganIterator.htm –

+22

"ahora solo estás siendo perezoso" Por todo w Sabemos que el póster puede ser un experto en algún otro lenguaje de programación. Si no quieres ayudarlo, simplemente no lo hagas. Estaba buscando en Google 3 años después y encontré la respuesta muy útil. –

+1

¿Por qué el OP y la respuesta aceptada por la misma persona? – Viet

Respuesta

32

La muestra para su problema es el siguiente

#include <iostream> 
    #include <list> 
    using namespace std; 

    typedef list<int> IntegerList; 
    int main() 
    { 
     IntegerList intList; 
     for (int i = 1; i <= 10; ++i) 
     intList.push_back(i * 2); 
     for (IntegerList::const_iterator ci = intList.begin(); ci != intList.end(); ++ci) 
     cout << *ci << " "; 
     return 0; 
    } 
+0

Solución fácil: http://www.java2s.com/Code/Cpp/List/TraverseaListUsinganIterator.htm –

+0

Omg, ¿esto incluso merece ser preguntado? ¿Dónde está la referencia? RTFM! – Viet

6

Si se refiere a un STL std::list, entonces aquí es un ejemplo sencillo de http://www.cplusplus.com/reference/stl/list/begin/.

// list::begin 
#include <iostream> 
#include <list> 

int main() 
{ 
    int myints[] = {75,23,65,42,13}; 
    std::list<int> mylist (myints,myints+5); 

    std::cout << "mylist contains:"; 
    for (std::list<int>::iterator it=mylist.begin(); it != mylist.end(); ++it) 
    std::cout << ' ' << *it; 

    std::cout << '\n'; 

    return 0; 
} 
+1

Aunque debe usar 'const_iterator' en lugar de' iterator' si no necesita modificar la lista. –

+0

¿el iterador elimina elementos de la lista y reduce su tamaño? – Tariq

+0

@Tariq: un iterador _iterates_. –

16

para reflejar las nuevas adiciones en C++ y se extienden solución algo obsoleta por @karthik, starting from C++11 it can be done shorter con auto especificador:

#include <iostream> 
#include <list> 
using namespace std; 

typedef list<int> IntegerList; 

int main() 
{ 
    IntegerList intList; 
    for (int i=1; i<=10; ++i) 
    intList.push_back(i * 2); 
    for (auto ci = intList.begin(); ci != intList.end(); ++ci) 
    cout << *ci << " "; 
} 

o even easier usando range-based for loops:

#include <iostream> 
#include <list> 
using namespace std; 

typedef list<int> IntegerList; 

int main() 
{ 
    IntegerList intList; 
    for (int i=1; i<=10; ++i) 
     intList.push_back(i * 2); 
    for (int i : intList) 
     cout << i << " "; 
} 
Cuestiones relacionadas