La forma más limpia de iteración a través de un vector es a través de iteradores:
for (auto it = begin (vector); it != end (vector); ++it) {
it->doSomething();
}
o (equivalente a la anterior)
for (auto & element : vector) {
element.doSomething();
}
Antes de C++ 0x, usted tiene que reemplazar por auto el tipo de iterador y el uso de funciones miembro en lugar de las funciones globales comienzan y terminan.
Esto probablemente es lo que has visto. En comparación con el enfoque que menciona, la ventaja es que no depende en gran medida del tipo de vector
. Si cambia vector
a una clase diferente de "tipo de colección", su código probablemente aún funcione. Sin embargo, también puedes hacer algo similar en Java. No hay mucha diferencia conceptualmente; C++, sin embargo, usa plantillas para implementar esto (en comparación con los genéricos en Java); por lo tanto, el enfoque funcionará para todos los tipos para los que se definen las funciones begin
y, incluso para tipos que no son de clase, como matrices estáticas. Ver aquí: How does the range-based for work for plain arrays?
El bucle for no es una función, por lo que no tiene parámetros (o argumentos, que es lo que le pasa). ¿Quiere decir algo como 'std :: vector :: size_type i = 0;', o quizás 'std :: vector :: iterator it = vector.begin();'? –
chris
Exactamente, todos los ejemplos que veo están escritos así. – Flynn
En Java, preferiría un bucle for-each o usar iteradores. Más o menos lo mismo que C++ aunque sintaxis ligeramente diferente. –