Namespaces
Variants

Extensions for ranges

From cppreference.net

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 的别名模板
(别名模板)

迭代器

<tr class="t
迭代器相关概念
定义于命名空间 std::experimental::ranges
迭代器概念
指定类型可通过应用运算符 * 进行读取
(概念)
指定值可被写入迭代器所引用的对象
(概念)
指定 Semiregular 类型可通过前置和后置递增运算符进行递增
(概念)
指定对 WeaklyIncrementable 类型的递增操作保持相等性,且该类型为 EqualityComparable
(概念)
指定类型的对象可被递增和解引用
(概念)
指定类型的对象是 Iterator 类型的哨兵
(概念)
指定运算符 - 可应用于迭代器和哨兵,以在常数时间内计算它们的差值
(概念)
指定类型是输入迭代器,即可读取其引用值,且支持前置和后置递增
(概念)
指定类型是给定值类型的输出迭代器,即可向其中写入该类型的值,且支持前置和后置递增
(概念)
指定 InputIterator 是前向迭代器,支持相等比较和多趟遍历
(概念)
指定 ForwardIterator 是双向迭代器,支持向后移动
(概念)
指定 BidirectionalIterator 是随机访问迭代器,支持常数时间前进和下标访问
(概念)
间接可调用概念
指定可调用类型可通过解引用 Readable 类型的结果进行调用
(概念)
指定可调用对象在通过解引用 Readable 类型的结果调用时满足 Predicate
(概念)
指定可调用对象在通过解引用某些 Readable 类型的结果调用时满足 Relation
(概念)
指定可调用对象在通过解引用某些 Readable 类型的结果调用时满足 StrictWeakOrder
(概念)
通用算法要求
指定值可从 Readable 类型移动至 Writable 类型
(概念)

范围

范围概念
指定类型为范围,即提供 begin 迭代器和 end 哨兵
(概念)
指定范围可在常数时间内获知其大小
(概念)
指定范围为视图,即具有常数时间复制/移动/赋值操作
(概念)
指定范围具有相同的迭代器和哨兵类型
(概念)
指定其迭代器类型满足 InputIterator 的范围
(概念)
指定其迭代器类型满足 OutputIterator 的范围
(概念)
指定其迭代器类型满足 ForwardIterator 的范围
(概念)
指定其迭代器类型满足 BidirectionalIterator 的范围
(概念)
指定其迭代器类型满足 RandomAccessIterator 的范围
(概念)
范围访问
定义于 命名空间 std::experimental::ranges
返回指向范围起始的迭代器
(定制点对象)
返回指向范围末尾的迭代器
(定制点对象)
返回指向范围的反向迭代器
(定制点对象)
返回指向范围末尾的反向迭代器
(定制点对象)
范围原语
定义于 命名空间 std::experimental::ranges
获取可在常数时间内计算大小的范围的大小
(定制点对象)
检查范围是否为空
(定制点对象)
获取连续范围起始处的指针
(定制点对象)
获取范围的迭代器和哨兵类型
(别名模板)

算法

非修改序列操作
定义于命名空间 std::experimental::ranges
检查谓词是否对范围中所有、任一或无元素为 true
(函数模板)
对范围中的元素应用函数
(函数模板)
返回满足特定条件的元素数量
(函数模板)
寻找两个范围首次出现不同的位置
(函数模板)
判断两组元素是否相同
(函数模板)
若一个范围按字典序小于另一个则返回 true
(函数模板)
寻找首个满足特定条件的元素
(函数模板)
在特定范围中寻找最后的元素序列
(函数模板)
搜索一组元素中的任意一个
(函数模板)
寻找首对相邻且相等(或满足给定谓词)的元素
(函数模板)
搜索一个元素范围
(函数模板)
在范围中搜索连续若干个相同元素
(函数模板)
修改序列操作
定义于命名空间 std::experimental::ranges
复制元素范围到新位置
(函数模板)
复制若干元素到新位置
(函数模板)
按逆序复制元素范围
(函数模板)
移动元素范围到新位置
(函数模板)
按逆序移动元素范围到新位置
(函数模板)
为元素范围赋值特定值
(函数模板)
为若干元素赋值
(函数模板)
对元素