C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- std::ranges::begin
- std::ranges::cbegin
- std::ranges::end
- std::ranges::cend
- std::ranges::crbegin
- std::ranges::crend
- std::ranges::ssize
- std::ranges::data
- std::ranges::borrowed_range, std::ranges::enable_borrowed_range
- std::ranges::view, std::ranges::enable_view, std::ranges::view_base
- std::ranges::cdata
- std::ranges::iterator_t, std::ranges::sentinel_t, std::ranges::range_size_t, std::ranges::range_difference_t, std::ranges::range_value_t, std::ranges::range_reference_t, std::ranges::range_rvalue_reference_t
- std::ranges::dangling
- std::ranges::borrowed_iterator_t, std::ranges::borrowed_subrange_t
- std::ranges::range
- std::ranges::sized_range, std::ranges::disable_sized_range
- std::ranges::common_range
- std::ranges::viewable_range
- std::ranges::input_range
- std::ranges::output_range
- std::ranges::forward_range
- std::ranges::bidirectional_range
- std::ranges::random_access_range
- std::ranges::contiguous_range
- std::ranges::subrange
- 半正则包装 (C++20)
- std::ranges::views::empty, std::ranges::empty_view
- std::ranges::views::iota, std::ranges::iota_view
- std::ranges::views::counted
- std::ranges::views::all_t, std::ranges::views::all
- std::ranges::ref_view
- std::ranges::views::transform, std::ranges::transform_view
- std::ranges::views::reverse, std::ranges::reverse_view
- std::ranges::views::filter, std::ranges::filter_view
- 注释
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
位置:首页 > C++ 参考手册 >范围库 (C++20) > std::ranges::views::iota, std::ranges::iota_view
std::ranges::views::iota, std::ranges::iota_view
std::semiregular Bound = std::unreachable_sentinel_t>
requires __WeaklyEqualityComparableWith<W, Bound> && std::semiregular<W>
inline constexpr /*unspecified*/ iota = /*unspecified*/;
E
和 F
子表达式分别表达式等价于 iota_view{E} 与 iota_view{E, F} 。表达式等价
表达式 e 表达式等价于表达式 f ,若 e 与 f 拥有相同效果,均为潜在抛出或均非潜在抛出(即 noexcept(e) == noexcept(f) ),且均为常量子表达式或均非常量子表达式。
辅助模板
template<std::weakly_incrementable W, std::semiregular Bound> inline constexpr bool enable_borrowed_range<ranges::iota_view<W, Bound>> = true; |
||
std::ranges::enable_borrowed_range 的此特化使得 iota_view
满足 borrowed_range 。
数据成员
std::ranges::iota_view::base_
W value_ = W(); /* exposition-only */ |
||
当前值
std::ranges::iota_view::pred_
Bound bound_ = Bound(); /* exposition-only */ |
||
边界(默认为 std::unreachable_sentinel_t )
成员函数
std::ranges::iota_view::iota_view
iota_view() = default; |
(1) | |
constexpr explicit iota_view(W value); |
(2) | |
constexpr iota_view(std::type_identity_t<W> value, std::type_identity_t<Bound> bound); |
(3) | |
value_
与 bound_
。value_
,并期待 Bound
为 unreachable_sentinel_t
(默认)或可从 value
达到的 Bound() 值。此构造函数用于创建无界 iota 视图,例如 iota(0) 产生数 0 、 1 、 2 ……无穷大。value_
并以 bound
初始化 bound_
。此构造函数用于创建有界 iota 视图,例如 iota(10, 20) 产生从 10 到 19 的数。参数
value | - | 开始值 |
bound | - | 边界 |
std::ranges::iota_view::begin
constexpr iterator begin() const; |
||
返回以 value_ 初始化的迭代器。
std::ranges::iota_view::end
constexpr auto end() const; |
(1) | |
constexpr iterator end() const requires std::same_as<W, Bound>; |
(2) | |
std::ranges::iota_view::size
constexpr auto size() const requires (std::same_as<W, Bound> && __Advanceable<W>) || |
||
若视图有界则返回视图的大小。
推导指引
template<class W, class Bound> requires (!__is_integer_like<W> || !__is_integer_like<Bound> || |
||
注意推导指引自身抵御有符号/无符号不匹配漏洞,如 views::iota(0, v.size()) ,其中 0
为(有符号) int
而 v.size()
为(无符号) std::size_t
。
嵌套类
std::ranges::iota_view::iterator
template<class W, class Bound> struct iota_view<W, Bound>::iterator; /* exposition-only */ |
||
iota_view::begin
的返回类型。
它若 W 实现 __Advanceable 则此为 random_access_iterator ,若 W 实现 __Decrementable 则为 bidirectional_iterator ,若 W 实现 incrementable 则为 forward_iterator ,否则为 input_iterator 。然而它只是遗留输入迭代器 (LegacyInputIterator) 。
std::ranges::iota_view::iterator::iterator
constexpr explicit iterator(W value); |
||
以 value 初始化仅用于阐释的数据成员 value_ 。此值将为 operator* 所返回并为 operator++ 所增加。
std::ranges::iota_view::iterator::operator*
constexpr W operator*() const noexcept(std::is_nothrow_copy_constructible_v<W>); |
||
按值返回当前值(换言之,这是只读视图)。
std::ranges::iota_view::iterator::operator++
constexpr iterator& operator++() |
(1) | |
constexpr void operator++(int) |
(2) | |
constexpr iterator operator++(int) requires std::incrementable<W>; |
(3) | |
std::ranges::iota_view::iterator::operator--
constexpr iterator& operator--() requires __Decrementable<W>; |
(1) | |
constexpr iterator operator--(int) requires __Decrementable<W>; |
(2) | |
std::ranges::iota_view::iterator::operator[]
constexpr W operator[](difference_type n) const requires __Advanceable<W>; |
||
Equivalent to return W(value_ + n);
其他期待迭代器具有的成员。
std::ranges::iota_view::sentinel
template<class W, class Bound> struct iota_view<W, Bound>::sentinel; /* exposition-only */ |
||
iota_view::end
的返回类型。
std::ranges::iota_view::sentinel::bound_
Bound bound_ = Bound(); /* exposition only */ |
||
仅用于阐释的数据成员保有哨位(通常对于有界 iota 视图为数,或对于无界 iota 视图为 std::unreachable_sentinel_t 的实例)。
std::ranges::iota_view::sentinel::sentinel
sentinel() = default; constexpr explicit sentinel(Bound bound); |
||
以 bound 初始化仅用于阐释的数据成员 bound_ 。
std::ranges::iota_view::sentinel::operator==
friend constexpr bool operator==(const iterator& x, const sentinel& y); |
||
等价于 x.value_ == y.bound_; 。
std::ranges::iota_view::sentinel::operator-
friend constexpr std::iter_difference_t<W> operator-(const iterator& x, const sentinel& y) |
(1) | |
friend constexpr std::iter_difference_t<W> operator-(const sentinel& x, const iterator& y) |
(2) | |