c++ - 如何用迭代器反向迭代 vector ?

标签 c++

例如:

for(int i=0;i<v.size();i++){

}

是正常顺序,

for(int i=v.size()-1;i>=0;i--){

}

是倒序,

迭代器的反向版本怎么样?

for(vector<int>::iterator it=v.begin();it!=v.end();++it){

}

还有这种代码风格的反向版本吗?

for(int i : v){

}

最佳答案

使用 reverse iterator :

for(auto it = v.rbegin(); it != v.rend(); ++it){/*...*/}

没有内置的方法可以反向执行基于范围的 for,但您可以使用 boost::adaptors::reversed :

for(auto& i : boost::adaptors::reversde(v)){/*...*/}

关于c++ - 如何用迭代器反向迭代 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227835/

相关文章:

c++ - 使用#pragma omp parallel 让程序变慢

c++ - 用最少/一行代码更新一维数组的多个位置

c++ - 巨大的 vector "hangs"程序? (50000 x 50000 个细胞)

c++ - 在 Qt 中绘制在标签的顶部,而不是在它的后面

c++ - 使用迭代器从文件中读取二进制整数列表

c++ - 预处理器指令和#error

c++ - std函数下限不能按预期工作吗?

c++ - 优化可变长度编码

c++ - 计算在编译时代码中引用了多少时间对象

c++ - 如何避免函数的多重定义(Linux、GCC/G++、Code::Blocks)