以相反的顺序打印矢量

cpp*_*cpp 2 c++ stl vector

是否有更好的方法以相反的顺序打印矢量,然后:

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;

void print_elem(int elem)
{
    cout << elem << endl;    
}

int main()
{
    int ia[4]={1,2,3,4};
    vector<int> vec(ia,ia+4);
    reverse(vec.begin(), vec.end());
    for_each(vec.begin(),vec.end(),print_elem);
    reverse(vec.begin(), vec.end());
}
Run Code Online (Sandbox Code Playgroud)

Vau*_*ato 18

您可以使用反向迭代器:

for_each(vec.rbegin(),vec.rend(),print_elem);
Run Code Online (Sandbox Code Playgroud)


Die*_*ühl 16

有许多方法可以在不反转元素的情况下反向打印双向序列,例如:

std::copy(vec.rbegin(), vec.rend(), std::ostream_iterator<int>(std::cout, "\n"));
std::reverse_copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, "\n"));
Run Code Online (Sandbox Code Playgroud)