std::ranges:: crend
|
定义于头文件
<ranges>
|
||
|
定义于头文件
<iterator>
|
||
|
inline
namespace
/* 未指定 */
{
inline
constexpr
/* 未指定 */
crend
=
/* 未指定 */
;
|
(C++20 起)
(定制点对象) |
|
|
调用签名
|
||
|
template
<
class
T
>
requires
/* 见下文 */
|
(C++20 起) | |
返回一个哨兵 用于常量迭代器 (自 C++23 起) ,指示被视作反向序列的 const 限定 (直至 C++23) 范围的末尾。
|
设
对
|
(C++23 前) |
|
若实参为左值,或
ranges::
enable_borrowed_range
<
std::
remove_cv_t
<
T
>>
为
true
,则对
其他情况下,调用
|
(C++23 起) |
若表达式
e
满足
ranges
::
crend
(
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
满足
input_iterator
概念,则其同时满足
constant-iterator
概念。
(C++23 起)
定制点对象
名称
ranges::crend
表示一个
定制点对象
,它是一个常量
函数对象
,具有
字面量
的
semiregular
类类型。详情请参阅
定制点对象
。
示例
#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)
|
返回容器或数组的反向末端迭代器
(函数模板) |