如何用迭代器反转迭代向量?

ggr*_*grr 0 c++

例如:

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

}
Run Code Online (Sandbox Code Playgroud)

是正常的顺序,

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

}
Run Code Online (Sandbox Code Playgroud)

是逆序,

如何反转迭代版本的迭代器?

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

}
Run Code Online (Sandbox Code Playgroud)

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

for(int i : v){

}
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 5

使用反向迭代器:

for(auto it = v.rbegin(); it != v.rend(); ++it){/*...*/}
Run Code Online (Sandbox Code Playgroud)

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

for(auto& i : boost::adaptors::reversde(v)){/*...*/}
Run Code Online (Sandbox Code Playgroud)