c++ vector的迭代器倒序遍历代码实现
第一个元素是从end-1开始的,end指向的不是最后一个元素
for(std::vector<int>::iterator it=myvec.end()-1;it>=myvec.begin();it--)
{
//处理逻辑自己定义,我这里自己直接输出了
cout<<*it<<endl;
if(it==myvec.begin())
break;//走到这里就不能再减了
}
使用反向迭代器逆序遍历vector代码
for(std::set<int>::reverse_iterator it2=myvec.rbegin();it2 != myvec.rend();++it2)
{
cout<<*it2<<endl;
}//迭代器一定要使用reverse_iterator
用下面的方法遍历是错误的,会引起死循环
size_t nCount = vValue.size();
for (size_t i = nCount - 1; i >= 0; --i) {
int n = 0;
}
这是因为size_t是无符号整数,它是值永远是大于等于0的,所以 i >= 0永远为真,导致循环无法结束。