std::experimental::ranges:: distance
|
namespace
{
constexpr
/* 未指定 */
distance
=
/* 未指定 */
;
|
(ranges TS)
(定制点对象) |
|
|
调用签名
|
||
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr ranges :: difference_type_t < I > distance ( I first, S last ) ; |
(1) | |
|
template
<
Range R
>
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ; |
(2) | |
|
template
<
SizedRange R
>
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ; |
(3) | |
返回 first 与 last 之间的距离,或范围 r 的起始与末尾之间的距离。
[
first
,
last
)
不构成有效范围,则
I
与
S
必须为相同类型且必须满足
SizedSentinel
概念,同时
[
last
,
first
)
必须构成有效范围。否则行为未定义。
实例化重载 (2,3) 可能在实例化点之前未包含头文件 <experimental/ranges/range> 时导致格式错误。
目录 |
定制点对象
名称
ranges::distance
表示一个
定制点对象
,它是一个字面量
Semiregular
类类型(为说明目的记为
DistanceT
)的
函数对象
。
DistanceT
的所有实例都是等价的。因此,
ranges::distance
可以被自由复制,其副本可以互换使用。
给定一组类型
Args...
,若
std::
declval
<
Args
>
(
)
...
满足上述对
ranges::distance
参数的要求,则
DistanceT
将满足
ranges
::
Invocable
<
const
DistanceT, Args...
>
。否则,
DistanceT
的函数调用运算符均不参与重载决议。
在每个定义了
ranges::distance
的翻译单元中,它都指向同一个定制点对象实例。(这意味着它可以自由用于内联函数和函数模板等场景,而不会违反
单一定义规则
。)
返回值
从 first 到 last 的距离,或范围 r 的起点到终点的距离。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
返回两个迭代器之间的距离
(函数模板) |
|
|
按给定距离推进迭代器
(函数模板) |
|
|
递增迭代器
(函数模板) |
|
|
递减迭代器
(函数模板) |
|
|
获取可在常数时间内计算大小的范围的大小
(定制点对象) |