std::ranges:: cend
|
Определено в заголовочном файле
<ranges>
|
||
|
Определено в заголовочном файле
<iterator>
|
||
|
inline
namespace
/* unspecified */
{
inline
constexpr
/* unspecified */
cend
=
/* unspecified */
;
|
(начиная с C++20)
(объект точки настройки) |
|
|
Сигнатура вызова
|
||
|
template
<
class
T
>
requires
/* see below */
|
(начиная с C++20) | |
Возвращает сентинель для константного итератора (начиная с C++23) , обозначающий конец константно-квалифицированного (до C++23) диапазона.
|
Пусть
Вызов
|
(до C++23) |
|
Если аргумент является lvalue или
ranges::
enable_borrowed_range
<
std::
remove_cv_t
<
T
>>
равно
true
, тогда вызов
Во всех остальных случаях вызов
|
(начиная с 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
класса. Для подробностей см.
CustomizationPointObject
.
Пример
#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)
|
возвращает sentinel, указывающий на конец диапазона
(объект точки кастомизации) |
|
(C++11)
(C++14)
|
возвращает итератор на конец контейнера или массива
(шаблон функции) |