Experimental library header <experimental/ranges/iterator>
From cppreference.net
<
cpp
|
header
|
experimental
此头文件属于 ranges 库。
目录 |
|
定义于 命名空间
std::experimental::ranges
|
迭代器概念
规定类型可通过应用
*
运算符进行读取
(概念) |
|
|
规定值可被写入迭代器所引用的对象
(概念) |
|
规定
Semiregular
类型可通过前置和后置递增运算符进行自增
(概念) |
|
规定对
WeaklyIncrementable
类型的递增操作保持相等性,且该类型为
EqualityComparable
(概念) |
|
|
规定类型的对象可被递增和解引用
(概念) |
|
规定类型的对象是
Iterator
类型的哨位
(概念) |
|
规定可对迭代器和哨位应用
-
运算符以在常数时间内计算其差值
(概念) |
|
|
规定类型为输入迭代器,即可读取其引用值且支持前置和后置递增
(概念) |
|
|
规定类型是给定值类型的输出迭代器,即可向其写入该类型的值且支持前置和后置递增
(概念) |
|
规定
InputIterator
为前向迭代器,支持相等比较和多趟遍历
(概念) |
|
规定
ForwardIterator
为双向迭代器,支持向后移动
(概念) |
|
规定
BidirectionalIterator
为随机访问迭代器,支持常数时间内的前进后退和下标操作
(概念) |
间接可调用概念
规定可调用类型可通过解引用
Readable
类型的结果进行调用
(概念) |
|
规定可调用对象在通过解引用
Readable
类型的结果调用时满足
Predicate
(概念) |
|
规定可调用对象在通过解引用某些
Readable
类型的结果调用时满足
Relation
(概念) |
|
规定可调用对象在通过解引用某些
Readable
类型的结果调用时满足
StrictWeakOrder
(概念) |
通用算法要求
规定值可以从
Readable
类型移动至
Writable
类型
(概念) |
|
规定值可以从
Readable
类型移动至
Writable
类型,且可通过中间对象执行移动操作
(概念) |
|
规定值可以从
Readable
类型复制至
Writable
类型
(概念) |
|
规定值可以从
Readable
类型复制至
Writable
类型,且可通过中间对象执行复制操作
(概念) |
|
规定两个
Readable
类型所引用的值可以交换
(概念) |
|
规定两个
Readable
类型所引用的值可以比较
(概念) |
|
|
规定原地重排元素的算法的通用要求
(概念) |
|
|
规定通过复制元素将有序序列合并到输出序列的算法的要求
(概念) |
|
|
规定将序列排列为有序序列的算法的通用要求
(概念) |
概念工具
计算在一组
Readable
类型解引用结果上调用可调用对象的结果
(类模板) |
|
|
用于指定接受投影操作的算法约束的辅助模板
(类模板) |
迭代器原语
迭代器工具
|
定义于命名空间
std::experimental::ranges
|
|
|
将解引用对象的结果转换为其关联的右值引用类型
(定制点对象) |
|
|
交换两个可解引用对象所引用的值
(定制点对象) |
|
迭代器特征
|
定义于命名空间
std::experimental::ranges
|
|
获取
WeaklyIncrementable
类型的差值类型
(类模板) |
|
获取
Readable
类型的值类型
(类模板) |
|
|
获取输入迭代器类型的迭代器类别
(类模板) |
|
|
收集迭代器关联类型的兼容性特征类
(别名模板) |
|
|
获取可解引用对象的关联引用类型
(别名模板) |
|
迭代器类别标签
|
定义于命名空间
std::experimental::ranges
|
|
|
用于指示迭代器类别的空类类型
(类) |
|
std::iterator_traits 特化
|
定义于命名空间
std
|
|
|
特化
std::iterator_traits
以支持范围TS迭代器
(类模板特化) |
|
迭代器操作
|
定义于 命名空间
std::experimental::ranges
|
|
|
将迭代器前进指定距离
(函数模板) |
|
|
返回迭代器与哨位之间的距离,或范围起始与末尾之间的距离
(函数模板) |
|
|
递增迭代器
(函数模板) |
|
|
递减迭代器
(函数模板) |
|
迭代器适配器
|
定义于命名空间
std::experimental::ranges
|
|
|
用于反向遍历的迭代器适配器
(类模板) |
|
|
用于容器尾部插入的迭代器适配器
(类模板) |
|
|
用于容器前端插入的迭代器适配器
(类模板) |
|
|
用于容器插入的迭代器适配器
(类模板) |
|
|
解引用为右值引用的迭代器适配器
(类模板) |
|
与
move_iterator
配合使用的哨兵适配器
(类模板) |
|
|
将迭代器-哨兵对适配为通用迭代器类型以用于传统算法
(类模板) |
|
|
跟踪与起始位置距离的迭代器适配器
(类模板) |
|
|
用于知晓自身范围边界的迭代器类型的空哨兵类型
(类) |
|
|
可能悬垂的迭代器的包装器
(类模板) |
|
用
dangling
包装右值范围迭代器类型的别名模板
(别名模板) |
|
|
与任意迭代器配合使用以表示无限范围的哨兵类型
(类) |
|
流迭代器
|
定义于 命名空间
std::experimental::ranges
|
|
|
从
std::basic_istream
读取的输入迭代器
(类模板) |
|
|
写入到
std::basic_ostream
的输出迭代器
(类模板) |
|
|
从
std::basic_streambuf
读取的输入迭代器
(类模板) |
|
|
写入到
std::basic_streambuf
的输出迭代器
(类模板) |
|
概要
namespace std { namespace experimental { namespace ranges { inline namespace v1 { template <class T> concept bool /* 可解引用 */ // 仅用于说明 = requires(T& t) { {*t} -> auto&&; }; namespace { constexpr /* 未指定 */ iter_move = /* 未指定 */; constexpr /* 未指定 */ iter_swap = /* 未指定 */; } template <class> struct difference_type; template <class T> using difference_type_t = typename difference_type<T>::type; template <class> struct value_type; template <class T> using value_type_t = typename value_type<T>::type; template <class> struct iterator_category; template <class T> using iterator_category_t = typename iterator_category<T>::type; template </* 可解引用 */ T> using reference_t = decltype(*declval<T&>()); template </* 可解引用 */ T> requires /* 参见定义 */ using rvalue_reference_t = decltype(ranges::iter_move(declval<T&>())); template <class In> concept bool Readable = /* 参见定义 */; template <class Out, class T> concept bool Writable = /* 参见定义 */; template <class I> concept bool WeaklyIncrementable = /* 参见定义 */; template <class I> concept bool Incrementable = /* 参见定义 */; template <class I> concept bool Iterator = /* 参见定义 */; template <class S, class I> concept bool Sentinel = /* 参见定义 */; template <class S, class I> constexpr bool disable_sized_sentinel = false; template <class S, class I> concept bool SizedSentinel = /* 参见定义 */; template <class I> concept bool InputIterator = /* 参见定义 */; template <class I> concept bool OutputIterator = /* 参见定义 */; template <class I> concept bool ForwardIterator = /* 参见定义 */; template <class I> concept bool BidirectionalIterator = /* 参见定义 */; template <class I> concept bool RandomAccessIterator = /* 参见定义 */; template <class F, class I> concept bool IndirectUnaryInvocable = /* 参见定义 */; template <class F, class I> concept bool IndirectRegularUnaryInvocable = /* 参见定义 */; template <class F, class I> concept bool IndirectUnaryPredicate = /* 参见定义 */; template <class F, class I1, class I2 = I1> concept bool IndirectRelation = /* 参见定义 */; template <class F, class I1, class I2 = I1> concept bool IndirectStrictWeakOrder = /* 参见定义 */; template <class> struct indirect_result_of; template <class F, class... Is> requires Invocable<F, reference_t<Is>...> struct indirect_result_of<F(Is...)>; template <class F> using indirect_result_of_t = typename indirect_result_of<F>::type; template <Readable I, IndirectRegularUnaryInvocable<I> Proj> struct projected; template <WeaklyIncrementable I, class Proj> struct difference_type<projected<I, Proj>>; <span class