std::experimental::ranges::next

来自cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
实验性
技术规范
文件系统库(文件系统 TS)
库基础(库基础 TS)
库基础 2(库基础 TS v2)
库基础 3(库基础 TS v3)
并行扩展(并行 TS)
并行扩展 2(并行 TS v2)
并发扩展(并发 TS)
并发扩展 2(并发 TS v2)
概念(概念 TS)
范围(范围 TS)
反射(反射 TS)
数学特殊函数(特殊函数 TR)
实验性非 TS 功能特性
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
迭代器库
迭代器概念
间接可调用概念
                                                  
                                                  
                                                  
常用算法要求
                                                  
概念工具
迭代器工具及运算
next
迭代器特征
迭代器适配器
流迭代器
 
namespace{

    constexpr/* 未指明 */ next =/* 未指明 */;

}
(范围 TS)
(定制点对象)
调用签名
template< Iterator I >
constexpr I next( I i );
(1)
template< Iterator I >
constexpr I next( I i, ranges::difference_type_t<I> n );
(2)
template< Iterator I, Sentinel<I> S >
constexpr I next( I i, S bound );
(3)
template< Iterator I, Sentinel<I> S >
constexpr I next( I i, ranges::difference_type_t<I> n, S bound );
(4)

n 次推进迭代器 i,或直至抵达 bound,先到为止,并返回前进的迭代器。

1) 等价于 ++i;return i;
2) 等价于 ranges::advance(i, n);return i;
3) 等价于 ranges::advance(i, bound);return i;
4) 等价于 ranges::advance(i, n, bound);return i;

目录

[编辑] 定制点对象

名称 ranges::next 代表一个定制点对象,它是字面Semiregular 类类型的cpp/named req/FunctionObject(为说明目的以 NextT 表示)。NextT 的所有实例均相等。从而能自由地复制 ranges::next,且能交替使用其副本。

给定类型集合 Args...,若 std::declval<Args>()... 满足上面针对 ranges::next 实参的要求,则 NextT 将满足 ranges::Invocable<const NextT, Args...>。否则,没有 NextT 的函数调用运算符参与重载决议。

在每个定义 ranges::next 的翻译单元中,它都指代定制点对象的同一实例。(这表示能自由地在类似 inline 函数和函数模板的东西中使用它,而不违反单一定义规则。)

[编辑] 返回值

推进后的迭代器。

[编辑] 注解

虽然对重载 (2) 忽略 n 表现为如同 n 为 1,但对重载 (4) 忽略 n 表现为 n 为无穷大(始终推进到 bound)。

[编辑]示例

[编辑]参阅

(C++11)
令迭代器自增
(函数模板)[编辑]
令迭代器前进给定的距离
(函数模板)[编辑]
自减迭代器
(函数模板)[编辑]
返回迭代器和哨位之间的距离,或范围起始和结尾间的距离
(函数模板)[编辑]
close