命名空间
变体
操作

std::ranges::view_interface<D>::size

来自 cppreference.cn
 
 
范围库 (Ranges library)
范围适配器 (Range adaptors)
 
 
constexpr auto size() requires ranges::forward_range<D> &&

    std::sized_sentinel_for<ranges::sentinel_t<D>,

                            ranges::iterator_t<D>>;
(1) (C++20 起)
constexpr auto size() const requires ranges::forward_range<const D> &&

    std::sized_sentinel_for<ranges::sentinel_t<const D>,

                            ranges::iterator_t<const D>>;
(2) (C++20 起)

size() 成员函数的默认实现通过计算哨兵与起始迭代器之间的差值来获取范围的大小。

目录

[编辑] 返回值

1) to-unsigned-like (ranges::end(static_cast<D&>(this)) -
                     ranges::begin(static_cast<D&>(this)))
2) to-unsigned-like (ranges::end(static_cast<const D&>(this)) -
                     ranges::begin(static_cast<const D&>(this)))

[编辑] 注意

以下派生类型可以使用 size() 的默认实现

以下类型派生自 std::ranges::view_interface 且未声明自己的 size() 成员函数,但它们不能使用默认实现,因为它们的迭代器和哨兵类型从不满足 sized_sentinel_for

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 3646 C++20 size 函数的默认实现返回有符号类型 它们返回无符号类型

[编辑] 参阅

(C++17)(C++20)
返回容器或数组的大小
(函数模板) [编辑]
返回等于范围大小的整数
(定制点对象)[编辑]
返回等于范围大小的有符号整数
(定制点对象)[编辑]