Extensions for ranges
From cppreference.net
<
cpp
|
experimental
C++范围扩展(ISO/IEC TS 21425:2017)规定了对核心语言的一项修改,并定义了本页所列的C++标准库新组件。
Ranges TS 基于经过 Concepts TS 修订的 C++14 标准。
目录 |
核心语言变更
Ranges TS 修改了 基于范围的 for 循环 的规范,允许使用不同类型的起始和结束迭代器。这一变更支持哨兵位的使用,该特性同样存在于 C++17 标准中。
概念
核心语言概念 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
指定一个类型与另一个类型相同
(概念) |
|
|
指定一个类型派生自另一个类型
(概念) |
|
|
指定一个类型可隐式转换为另一个类型
(概念) |
|
|
指定两个类型共享一个公共引用类型
(概念) |
|
|
指定两个类型共享一个公共类型
(概念) |
|
|
指定一个类型是整数类型
(概念) |
|
|
指定一个类型是带符号的整数类型
(概念) |
|
|
指定一个类型是无符号的整数类型
(概念) |
|
|
指定一个类型可从另一个类型赋值
(概念) |
|
|
指定一个类型可交换或两个类型可相互交换
(概念) |
|
比较概念 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
指定一个类型可用于布尔上下文
(概念) |
|
|
指定两个类型可使用运算符
==
和
!
=
进行相等性比较
(概念) |
|
|
指定运算符
==
是等价关系
(概念) |
|
|
指定该类型上的比较运算符产生全序关系
(概念) |
|
对象概念 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
指定该类型的对象可被销毁
(概念) |
|
|
指定该类型的变量可从一组实参类型构造或绑定
(概念) |
|
|
指定一个类型的对象可被默认构造
(概念) |
|
|
指定一个类型的对象可被移动构造
(概念) |
|
|
指定一个类型的对象可被复制构造和移动构造
(概念) |
|
| <div class | |
通用工具
实用工具组件 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
交换两个对象的值
(定制点对象) |
|
|
用新值替换实参并返回其先前值
(函数模板) |
|
函数对象 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
以给定参数调用
Callable
对象
(函数模板) |
|
|
实现
x
==
y
的函数对象
(类模板) |
|
|
实现
x
!
=
y
的函数对象
(类模板) |
|
|
实现
x
>
y
的函数对象
(类模板) |
|
|
实现
x
<
y
的函数对象
(类模板) |
|
|
实现
x
>=
y
的函数对象
(类模板) |
|
|
实现
x
<=
y
的函数对象
(类模板) |
|
|
返回其参数不变更的函数对象
(类) |
|
元编程与类型特征 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
检查某类型的对象能否与同类型或不同类型的对象交换
(类模板) |
|
|
确定一组类型的共同引用类型
(类模板) |
|
|
确定一组类型的共同类型
(类模板) |
|
标记对与元组 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
指定类型为标记说明符
(概念) |
|
|
指定类型表示标记说明符及其元素类型
(概念) |
|
|
为类元组类型增强命名访问器
(类模板) |
|
|
带标记的
std::pair
的别名模板
(别名模板) |
|
迭代器
|
|
|
|
定义于命名空间
std::experimental::ranges
|
|
迭代器概念 |
|
指定类型可通过应用运算符
*
进行读取
(概念) |
|
|
指定值可被写入迭代器所引用的对象
(概念) |
|
指定
Semiregular
类型可通过前置和后置递增运算符进行递增
(概念) |
|
指定对
WeaklyIncrementable
类型的递增操作保持相等性,且该类型为
EqualityComparable
(概念) |
|
|
指定类型的对象可被递增和解引用
(概念) |
|
指定类型的对象是
Iterator
类型的哨兵
(概念) |
|
指定运算符
-
可应用于迭代器和哨兵,以在常数时间内计算它们的差值
(概念) |
|
|
指定类型是输入迭代器,即可读取其引用值,且支持前置和后置递增
(概念) |
|
|
指定类型是给定值类型的输出迭代器,即可向其中写入该类型的值,且支持前置和后置递增
(概念) |
|
指定
InputIterator
是前向迭代器,支持相等比较和多趟遍历
(概念) |
|
指定
ForwardIterator
是双向迭代器,支持向后移动
(概念) |
|
指定
BidirectionalIterator
是随机访问迭代器,支持常数时间前进和下标访问
(概念) |
|
间接可调用概念 |
|
指定可调用类型可通过解引用
Readable
类型的结果进行调用
(概念) |
|
指定可调用对象在通过解引用
Readable
类型的结果调用时满足
Predicate
(概念) |
|
指定可调用对象在通过解引用某些
Readable
类型的结果调用时满足
Relation
(概念) |
|
指定可调用对象在通过解引用某些
Readable
类型的结果调用时满足
StrictWeakOrder
(概念) |
|
通用算法要求 |
|
指定值可从
Readable
类型移动至
Writable
类型
(概念) |
|
范围
|
定义于头文件
<experimental/ranges/range>
|
|
范围概念 |
|
指定类型为范围,即提供
begin
迭代器和
end
哨兵
(概念) |
|
|
指定范围可在常数时间内获知其大小
(概念) |
|
|
指定范围为视图,即具有常数时间复制/移动/赋值操作
(概念) |
|
|
指定范围具有相同的迭代器和哨兵类型
(概念) |
|
指定其迭代器类型满足
InputIterator
的范围
(概念) |
|
指定其迭代器类型满足
OutputIterator
的范围
(概念) |
|
指定其迭代器类型满足
ForwardIterator
的范围
(概念) |
|
指定其迭代器类型满足
BidirectionalIterator
的范围
(概念) |
|
指定其迭代器类型满足
RandomAccessIterator
的范围
(概念) |
|
范围访问 |
|
|
定义于 命名空间
std::experimental::ranges
|
|
|
返回指向范围起始的迭代器
(定制点对象) |
|
|
返回指向范围末尾的迭代器
(定制点对象) |
|
|
返回指向范围的反向迭代器
(定制点对象) |
|
|
返回指向范围末尾的反向迭代器
(定制点对象) |
|
范围原语 |
|
|
定义于 命名空间
std::experimental::ranges
|
|
|
获取可在常数时间内计算大小的范围的大小
(定制点对象) |
|
|
检查范围是否为空
(定制点对象) |
|
|
获取连续范围起始处的指针
(定制点对象) |
|
|
获取范围的迭代器和哨兵类型
(别名模板) |
|
算法
非修改序列操作 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
检查谓词是否对范围中所有、任一或无元素为
true
(函数模板) |
|
|
对范围中的元素应用函数
(函数模板) |
|
|
返回满足特定条件的元素数量
(函数模板) |
|
|
寻找两个范围首次出现不同的位置
(函数模板) |
|
|
判断两组元素是否相同
(函数模板) |
|
|
若一个范围按字典序小于另一个则返回
true
(函数模板) |
|
|
寻找首个满足特定条件的元素
(函数模板) |
|
|
在特定范围中寻找最后的元素序列
(函数模板) |
|
|
搜索一组元素中的任意一个
(函数模板) |
|
|
寻找首对相邻且相等(或满足给定谓词)的元素
(函数模板) |
|
|
搜索一个元素范围
(函数模板) |
|
|
在范围中搜索连续若干个相同元素
(函数模板) |
|
修改序列操作 |
|
|
定义于命名空间
std::experimental::ranges
|
|
|
复制元素范围到新位置
(函数模板) |
|
|
复制若干元素到新位置
(函数模板) |
|
|
按逆序复制元素范围
(函数模板) |
|
|
移动元素范围到新位置
(函数模板) |
|
|
按逆序移动元素范围到新位置
(函数模板) |
|
|
为元素范围赋值特定值
(函数模板) |
|
|
为若干元素赋值
(函数模板) |
|
| 对元素 | |