std::rbegin, std::crbegin
Определено в заголовке <array> |
||
|---|---|---|
Определено в заголовке <deque> |
||
Определено в заголовке <forward_list> |
||
Определено в заголовке <iterator> |
||
Определено в заголовке <list> |
||
Определено в заголовке <map> |
||
Определено в заголовке <regex> |
||
Определено в заголовке <set> |
||
Определено в заголовке <span> |
(с C++20) | |
Определено в заголовке <string> |
||
Определено в заголовке <string_view> |
(с C++17) | |
Определено в заголовке <unordered_map> |
||
Определено в заголовке <unordered_set> |
||
Определено в заголовке <vector> |
||
| (1) | ||
template< class C > auto rbegin( C& c ) -> decltype(c.rbegin()); |
(с C++14) (до C++17) |
|
template< class C > constexpr auto rbegin( C& c ) -> decltype(c.rbegin()); |
(с C++17) | |
| (1) | ||
template< class C > auto rbegin( const C& c ) -> decltype(c.rbegin()); |
(с C++14) (до C++17) |
|
template< class C > constexpr auto rbegin( const C& c ) -> decltype(c.rbegin()); |
(с C++17) | |
| (2) | ||
template< class T, std::size_t N > std::reverse_iterator<T*> rbegin( T (&array)[N] ); |
(с C++14) (до C++17) |
|
template< class T, std::size_t N > constexpr std::reverse_iterator<T*> rbegin( T (&array)[N] ); |
(с C++17) | |
| (3) | ||
template< class T > std::reverse_iterator<const T*> rbegin( std::initializer_list<T> il ); |
(с C++14) (до C++17) |
|
template< class T > constexpr std::reverse_iterator<const T*> rbegin(std::initializer_list<T> il); |
(с C++17) | |
| (4) | ||
template< class C > auto crbegin( const C& c ) -> decltype(std::rbegin(c)); |
(с C++14) (до C++17) |
|
template< class C > constexpr auto crbegin( const C& c ) -> decltype(std::rbegin(c)); |
(с C++17) |
Возвращает итератор к обратному началу заданного диапазона.
1) Возвращает итератор к обратному началу контейнера или представления
c, возможно с модификатором const.
2) Возвращает итератор к обратному началу массива
array.
4) Возвращает итератор к обратному началу контейнера или представления
c, с модификатором const.Параметры
| c | - | контейнер или представление с членом-функцией rbegin |
| array | - | массив произвольного типа |
| il | - | initializer_list |
Возвращаемое значение
1)
c.rbegin()
2)
std::reverse_iterator<T*>(array + N)
3)
std::reverse_iterator<const T*>(il.end())
4)
c.rbegin()
Исключение
Может выбросить исключение, определённое реализацией.
Перегрузки
Можно предоставить пользовательские перегрузки rbegin, для классов и перечислений, которые не предоставляют подходящей функции-члена rbegin(), но при этом могут быть перебраны.
|
Перегрузки |
(с C++20) |
Примечания
Перегрузка для std::initializer_list необходима, т.к. у неё нет функции-члена rbegin.
Пример
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::vector<int> v = {3, 1, 4};
auto vi = std::rbegin(v); // the type of `vi` is std::vector<int>::reverse_iterator
std::cout << "*vi = " << *vi << '\n';
*std::rbegin(v) = 42; // OK: after assignment v[2] == 42
// *std::crbegin(v) = 13; // error: the location is read-only
int a[] = {-5, 10, 15};
auto ai = std::rbegin(a); // the type of `ai` is std::reverse_iterator<int*>
std::cout << "*ai = " << *ai << '\n';
auto il = {3, 1, 4};
// the type of `it` below is std::reverse_iterator<int const*>:
for (auto it = std::rbegin(il); it != std::rend(il); ++it)
std::cout << *it << ' ';
std::cout << '\n';
}Вывод:
*vi = 4 *ai = 15 4 1 3
См. также
|
(C++11)(C++14)
|
возвращает итератор к началу контейнера или массива (шаблон функции) |
|
(C++11)(C++14)
|
возвращает итератор к концу контейнера или массива (шаблон функции) |
|
(C++14)
|
возвращает обратный итератор к концу контейнера или массива (шаблон функции) |
|
(C++20)
|
возвращает обратный итератор к диапазону (объект точки настройки) |
|
(C++20)
|
возвращает обратный итератор к только-для-чтения диапазону (объект точки настройки) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/rbegin