2012-06-23 26 views

Respuesta

8

C++ 11, que está utilizando si esto compila, permite lo siguiente:

for (string& feature : features) { 
    // do something with `feature` 
} 

This is the range-based for loop.

Si no desea mutar la función, también puede declararlo como string const& (o simplemente string, pero eso causará una copia innecesaria).

22

Prueba esto:

for(vector<string>::const_iterator i = features.begin(); i != features.end(); ++i) { 
    // process i 
    cout << *i << " "; // this will print all the contents of *features* 
} 

Si está utilizando C++ 11, entonces esto es legal también:

for(auto i : features) { 
    // process i 
    cout << i << " "; // this will print all the contents of *features* 
} 
+0

Quizás quiera decir '++ i' y no' i ++ '. –

+0

En realidad es lo mismo. –

+7

[¡No, no lo es!] (Http://stackoverflow.com/questions/24901/is-there-a-performance-difference-between-i-and-i-in-c) y deberías estar usando un 'const_iterator' no es simplemente un' iterator'. Este es el código de la placa de la caldera, debe aprenderlo bien y lo suficientemente bien para hacerlo bien, incluso si se lo pide cuando está dormido. –

Cuestiones relacionadas