Search code examples
c++c++11for-loopc++14ranged-loops

Iterating ranged-based for loop from end to begin


Reverse iteration from last item to first item can be done like this:

for (int i = myContainer.size() - 1; i >= 0; --i) {
    // Do
}

How can I reverse a ranged-based for loop:

for (auto i : myContainer) {
    // Do
}

Solution

  • Use std::reverse.

    std::reverse(std::begin(myContainer), std::end(myContainer));
    for (auto i : myContainer) {
        // Do
    }
    

    This will add O(n) iterator swaps