使用 range-for 循环以相反的顺序迭代向量?

Jit*_*Jat 2 c++ stl stdvector

我想以相反的顺序迭代一个向量,我知道我可以通过下面的代码轻松完成

#include<bits/stdc++.h>
using namespace std;
int main()
{
    vector<int> v(10);
    for(auto it=v.rbegin();it!=v.rend();it++)
        cout<<*it<<"";
}
Run Code Online (Sandbox Code Playgroud)

为了向前迭代,我们可以简单地通过下面的代码来完成。

for(auto it:v)
  cout<<it<<" ";
Run Code Online (Sandbox Code Playgroud)

现在的任务是...

是否可以进行类似于for(auto it:v) cout<<it<<" ". 如果是,那么如何?

chu*_*ill 7

如果您可以使用 C++20,则可以使用范围库,因此std::ranges::reverse_view

vector<int> v(10);
std::ranges::reverse_view vReversed{v};

for(auto it : vReversed)
    cout<<it<<" ";
Run Code Online (Sandbox Code Playgroud)