std::rend, std::crend - cppreference.com (original) (raw)

Defined in header
Defined in header
Defined in header <flat_map>
Defined in header <flat_set>
Defined in header <forward_list>
Defined in header <inplace_vector>
Defined in header
Defined in header
Defined in header
Defined in header
Defined in header
Defined in header
Defined in header
Defined in header <string_view>
Defined in header <unordered_map>
Defined in header <unordered_set>
Defined in header
template< class C > auto rend( C& c ) -> decltype(c.rend()); (1) (since C++14) (constexpr since C++17)
template< class C > auto rend( const C& c ) -> decltype(c.rend()); (2) (since C++14) (constexpr since C++17)
template< class T, std::size_t N > std::reverse_iterator<T*> rend( T (&array)[N] ); (3) (since C++14) (constexpr since C++17)
template< class T > std::reverse_iterator<const T*> rend( std::initializer_list<T> il ); (4) (since C++14) (constexpr since C++17)
template< class C > auto crend( const C& c ) -> decltype(std::rend(c)); (5) (since C++14) (constexpr since C++17)

Returns an iterator to the reverse-end of the given range.

1,2) Returns c.rend(), which is typically an iterator one past the reverse-end of the sequence represented by c.

  1. If C is a standard Container, returns a C::reverse_iterator object.

  2. If C is a standard Container, returns a C::const_reverse_iterator object.

  3. Returns std::end(c), with c always treated as const-qualified.

If C is a standard Container, returns a C::const_reverse_iterator object.

range-rbegin-rend.svg

[edit] Parameters

c - a container or view with a rend member function
array - an array of arbitrary type
il - an std::initializer_list

[edit] Return value

1,2) c.rend()

  1. c.rend()

[edit] Exceptions

May throw implementation-defined exceptions.

[edit] Overloads

Custom overloads of rend may be provided for classes and enumerations that do not expose a suitable rend() member function, yet can be iterated.

[edit] Notes

The overload for std::initializer_list is necessary because it does not have a member function rend.

[edit] Example

#include #include #include #include   int main() { int a[]{4, 6, -3, 9, 10}; std::cout << "C-style array a backwards: "; std::copy(std::rbegin(a), std::rend(a), std::ostream_iterator(std::cout, " "));   auto il = {3, 1, 4}; std::cout << "\nstd::initializer_list il backwards: "; std::copy(std::rbegin(il), std::rend(il), std::ostream_iterator(std::cout, " "));   std::vector v{4, 6, -3, 9, 10}; std::cout << "\nstd::vector v backwards: "; std::copy(std::rbegin(v), std::rend(v), std::ostream_iterator(std::cout, " ")); std::cout << '\n'; }

Output:

C-style array a backwards: 10 9 -3 6 4 std::initializer_list il backwards: 4 1 3 std::vector v backwards: 10 9 -3 6 4

[edit] See also

| | returns an iterator to the end of a container or array (function template) [edit] | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | returns a reverse iterator to the beginning of a container or array (function template) [edit] | | | returns an iterator to the beginning of a container or array (function template) [edit] | | | returns a reverse end iterator to a range(customization point object)[edit] | | | returns a reverse end iterator to a read-only range(customization point object)[edit] |