У вас есть две (три в C ++ 11) опции: const_iterator
s и индексы (+ "range-for" в 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
*/
}
Вы должны предпочесть использовать !=
вместо <
с итераторами - последний не работает со всеми итераторами, первый будет. С первым вы можете даже сделать код более универсальным (чтобы вы могли даже изменить тип контейнера, не касаясь цикла)
template<typename Container>
void func(const Container& container) {
typename Container::const_iterator iter;
for (iter = container.begin(); iter != container.end(); ++iter)
// work with *iter
}