std::ranges::crend
| Определено в заголовке <ranges>
|
||
| Определено в заголовке <iterator>
|
||
inline namespace /* unspecified */ {
inline constexpr /* unspecified */ crend = /* unspecified */;
}
|
(начиная с C++20) (объект точки настройки) |
|
| Сигнатура вызова |
||
template< class T >
requires /* see below */
constexpr /* see below */ auto crend( T&& t );
|
(начиная с C++20) | |
Возвращает дозорный для константного итератора(начиная с C++23), указывающий конец const-квалифицированного(до C++23) диапазона, который рассматривается как обратная последовательность.
|
Пусть
Вызов |
(до C++23) |
|
Если аргумент является lvalue или
Во всех остальных случаях вызов |
(начиная с C++23) |
Если ranges::crend(e) допустимо для выражения e, где decltype((e)) — это T, то CT моделирует std::ranges::range и(до C++23) std::sentinel_for<S, I> является true во всех случаях, где S — это decltype(ranges::crend(e)), а I — это decltype(ranges::crbegin(e)). Кроме того, S моделирует constant-iterator если он моделирует input_iterator.(начиная с C++23)
Объекты точек кастомизации
Имя
ranges::crend
обозначает
объект точки кастомизации
, который является константным
функциональным объектом
типа
литерального
semiregular
класса. Подробности см. в
CustomizationPointObject
.
Пример
#include <algorithm> #include <iostream> #include <iterator> #include <vector> int main() { int a[]{4, 6, -3, 9, 10}; std::cout << "Array backwards: "; namespace ranges = std::ranges; ranges::copy(ranges::rbegin(a), ranges::rend(a), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; std::cout << "Vector backwards: "; std::vector v{4, 6, -3, 9, 10}; ranges::copy(ranges::rbegin(v), ranges::rend(v), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; }
Вывод:
Array backwards: 10 9 -3 6 4 Vector backwards: 10 9 -3 6 4
Смотрите также
|
(C++20)
|
возвращает обратный конечный итератор для диапазона
(объект точки кастомизации) |
|
(C++14)
|
возвращает обратный конечный итератор для контейнера или массива
(шаблон функции) |