Starting with c++20, you can use a std::ranges::reverse_view and a range-based for-loop:
#include<ranges> #include<vector> #include<iostream> using namespace std::ranges; std::vector<int> const vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for(auto& i : views::reverse(vec)) { std::cout << i << ","; }
Or even
for(auto& i : vec | views::reverse)
Unfortunately, at the time of writing (Jan 2020) no major compiler implements the ranges library, but you can resort to Eric Niebler's ranges-v3:
#include <iostream> #include <vector> #include "range/v3/all.hpp" int main() { using namespace ranges; std::vector<int> const vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for(auto& i : views::reverse(vec)) { std::cout << i << ","; } return 0; }