std::ranges::cend
Определён в заголовочном файле <ranges> | ||
|---|---|---|
Определён в заголовочном файле <iterator> | ||
inline namespace /* unspecified */ {
inline constexpr /* unspecified */ cend = /* unspecified */;
}
| (начиная с C++20) (объект точки настройки) | |
| Сигнатура вызова | ||
template< class T >
requires /* see below */
constexpr /* see below */ auto cend( T&& t );
| (начиная с C++20) |
Возвращает сентинел для константного итератора(начиная с C++23), обозначающий конец диапазона с квалификатором const(до C++23).
| Пусть
Вызов | (до C++23) |
| Если аргумент является lvalue или
Во всех остальных случаях вызов | (начиная с C++23) |
Если ranges::cend(e) корректно для выражения e, где decltype((e)) — это T, то CT моделирует std::ranges::range, а(до C++23) std::sentinel_for<S, I> во всех случаях является true, где S — это decltype(ranges::cend(e)), а I — это decltype(ranges::cbegin(e)). Кроме того, S моделирует constant-iterator, если оно моделирует input_iterator.(начиная с C++23)
Объекты точек настройки
Имя ranges::cend обозначает объект точки настройки, который является константным функциональным объектом типа класса литерального semiregular. Подробности см. в разделе Объект точки настройки.
Пример
#include <algorithm>
#include <cassert>
#include <ranges>
#include <vector>
int main()
{
std::vector vec{3, 1, 4};
int arr[]{5, 10, 15};
assert(std::ranges::find(vec, 5) == std::ranges::cend(vec));
assert(std::ranges::find(arr, 5) != std::ranges::cend(arr));
}
См. также
|
(C++20) | возвращает сентинел, обозначающий конец диапазона (объект точки настройки) |
|
(C++11)(C++14) | возвращает итератор на конец контейнера или массива (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/cend