for(int& i:myVector){
...
}
有没有方法可以知道我是否是使用此代码样式的最后一个元素而不使用额外的变量或方法(例如:count,myVector.size())?
喜欢
for(vector<int>::iterator it=myVector.begin();it!=myVector.end();++it){
if(it!=end()-1){
...
}
}
答案 0 :(得分:2)
答案是否定的,没有使用辅助计数就无法找到索引。基于范围的表示法是从您隐藏索引并为您提供解除引用的迭代器。基于范围的for
相当于(from cppreference):
{
auto && __range = range_expression ;
for (auto __begin = begin_expr,
__end = end_expr;
__begin != __end; ++__begin) {
range_declaration = *__begin;
loop_statement
}
}
如果您需要基于索引的访问,请使用普通的旧迭代器。