Has dos (tres en 11 C++) opciones: const_iterator
s e índices (+ "de rango-para" en C++ 11)
void func(const std::vector<type>& vec) {
std::vector<type>::const_iterator iter;
for (iter = vec.begin(); iter != vec.end(); ++iter)
// do something with *iter
/* or
for (size_t index = 0; index != vec.size(); ++index)
// do something with vec[index]
// as of C++11
for (const auto& item: vec)
// do something with item
*/
}
Usted debe preferir el uso de !=
vez de <
con iteradores; este último no funciona con todos los iteradores, el primero lo hará. En el primer caso se puede incluso hacer el código más genérico (de modo que incluso se podría cambiar el tipo de contenedor sin tocar el bucle)
template<typename Container>
void func(const Container& container) {
typename Container::const_iterator iter;
for (iter = container.begin(); iter != container.end(); ++iter)
// work with *iter
}
favor, lea sobre el prefijo de frente operador de incremento postfix. 'it ++' debe ser '++ it', y' it ++ 'es necesario en casos excepcionales (es decir, al borrar mientras se itera). –
Es bastante obvio cuál es el problema en este caso. Sin embargo, en el futuro debe incluir en su pregunta el mensaje de error exacto que le está dando el compilador. –