std::iter_value_t, std::iter_reference_t, std::iter_difference_t, std::iter_rvalue_reference_t, std::iter_common_reference_t
迭代器概念 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
迭代器原语 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
算法概念与工具 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
间接可调用概念 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
常用算法要求 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
工具 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
迭代器适配器 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
流迭代器 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
迭代器定制点 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++20)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++20)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
迭代器操作 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
范围访问 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
在标头
<iterator>
定义
|
||
template<
class T
>
concept __Referenceable = /* see below */; // 仅用于阐释 |
||
template<
class T
>
using iter_value_t = /* see below */; |
(1) | (C++20 起) |
template<
__Referenceable T >
using iter_reference_t = decltype(*std::declval<T&>()); |
(2) | (C++20 起) |
template<
class T
>
using iter_difference_t = /* see below */; |
(3) | (C++20 起) |
template<
__Referenceable T>
requires /*
see below
*/ |
(4) | (C++20 起) |
template<
std::indirectly_readable
T >
using
iter_common_reference_t
=
std::common_reference_t<std::iter_reference_t<T>, |
(5) | (C++20 起) |
计算迭代器的关联类型。仅用于阐释的概念 __Referenceable
若且唯若表达式
*std::declval<T&>()
合法且拥有可引用类型(特别是非 void )才得到满足。
T
的值类型。若
std::iterator_traits<std::remove_cvref_t<T>> 未被特化,则
std::iter_value_t<T> 为 std::indirectly_readable_traits<std::remove_cvref_t<T>>::value_type
。否则它是 std::iterator_traits<std::remove_cvref_t<T>>::value_type 。
T
的引用类型。
T
的差类型。若
std::iterator_traits<std::remove_cvref_t<T>> 未被特化,则
std::iter_difference_t<T> 为 std::incrementable_traits<std::remove_cvref_t<T>>::difference_type
。否则它是 std::iterator_traits<std::remove_cvref_t<T>>::difference_type
。T
的右值引用类型。此别名模版上的制约的 "see below" 部分若且唯若表达式 ranges::iter_move(std::declval<T&>())
合法且拥有可引用类型(特别是非 void )才得到满足。
T
的共用引用类型。此乃其引用类型与到其值类型的左值引用类型的共用引用类型。参阅
(C++20)
|
指定类型通过应用运算符 * 可读 (概念) |
(C++20)
|
指定 semiregular
类型能以前后自增运算符自增 (概念) |
(C++20)
|
计算 indirectly_readable
类型的值类型 (类模板) |
(C++20)
|
计算 weakly_incrementable
类型的差类型 (类模板) |
为迭代器各项性质提供统一接口 (类模板) |