你有兩個(三個C++ 11)選項:const_iterator
S和指數(+ 「範圍,爲」 在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
}
請閱讀有關前綴與後綴增量運算符。 `it ++`應該是`++ it`,在少數情況下需要`it ++`(即迭代時擦除)。 – 2011-02-03 19:10:13
它在這種情況下很明顯是什麼問題。但是,將來你應該在你的問題中包含編譯器給你的確切錯誤信息。 – 2011-02-03 19:13:48