0

So, normally I'd iterate this way:

for(int i{ n - 1 }; i >= 0; --i) 

or like that:

for(size_t{v.size()-1}; i >= 0; --i) if(i > v.size()) break; 

or that:

for(int* i{ &v.back() }; i >= &v.front(); --i) 

But is there an easier/faster way to do that?

Here's the code, btw:

int n; cin >> n; vector<int> v(n); for (auto& e : v) cin >> e; int min = INT_MAX; int count{}; for (int* i{ &v.back() }; i >= &v.front(); i--) { if (*i > min) count++; min = ::min(min, *i); } 
1

1 Answer 1

1

From c++20, the easiest way to do this is with reverse_view like this:

for (int i : std::ranges::reverse_view{v}) // ... 

which is as efficient as an index based loop or iterating from rbegin to rend.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.