std::rbegin, std::crbegin
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| Определено в заголовочном файле <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) Возвращает итератор обратный к началу, возможно, const-квалифицированного контейнера или представления
c.2) Возвращает
std::reverse_iterator<T*> обратный к началу массива array.3) Возвращает
std::reverse_iterator<const T*> обратный к началу std::initializer_list il.4) Возвращает итератор обратный к началу conts-квалифицированного контейнера или представления
c.Параметры
| 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 <vector>
#include <iterator>
int main()
{
std::vector<int> v = { 3, 1, 4 };
auto vi = std::rbegin(v); // тип `vi` есть std::vector<int>::reverse_iterator
std::cout << "*vi = " << *vi << '\n';
*std::rbegin(v) = 42; // OK: после присваивания v[2] == 42
// *std::crbegin(v) = 13; // ошибка: местоположение доступно только для чтения
int a[] = { -5, 10, 15 };
auto ai = std::rbegin(a); // тип `ai` есть std::reverse_iterator<int*>
std::cout << "*ai = " << *ai << '\n';
auto il = { 3, 1, 4 };
// тип `it` ниже есть std::reverse_iterator<int const*>:
for (auto it = std::rbegin(il); it != std::rend(il); ++it)
std::cout << *it << ' ';
}
Вывод:
*vi = 4
*ai = 15
4 1 3
Смотрите также
(C++11)(C++14) |
возвращает итератор на начало контейнера или массива (шаблон функции) |
(C++11)(C++14) |
возвращает итератор на конец контейнера или массива (шаблон функции) |
(C++14) |
возвращает обратный конечный итератор для контейнера или массива (шаблон функции) |
(C++20) |
возвращает обратный итератор на диапазон (объект точки настройки) |
(C++20) |
возвращает обратный итератор на диапазон только для чтения (объект точки настройки) |