std::ranges::repeat_view<W, Bound>::iterator
来自 cppreference.com
< cpp | ranges | repeat view
struct /*iterator*/; |
(仅供说明*) | |
ranges::repeat_view<W, Bound>::iterator
是由 begin()
和 end()
返回的迭代器的类型 ranges::repeat_view<W, Bound>.
[编辑] 嵌套类型
仅供说明的类型 | |
类型 | 定义 |
index-type
|
std::conditional_t<std::same_as<Bound, std::unreachable_sentinel_t>, std::ptrdiff_t, Bound>(仅供说明的成员类型*) |
迭代器属性类型 | |
类型 | 定义 |
iterator_concept
|
std::random_access_iterator_tag |
iterator_category
|
std::random_access_iterator_tag |
value_type
|
W
|
difference_type |
std::conditional_t<is-signed-integer-like <index-type >, index-type , iota-diff-t <index-type >> |
[编辑] 数据成员
成员 | 定义 |
const W* value_ |
指向要重复的值的指针 (仅供说明的成员对象*) |
index-type current_ |
当前位置 (仅供说明的成员对象*) |
[编辑] 成员函数
std::ranges::repeat_view::iterator::iterator
/*iterator*/() = default; |
(1) | (自 C++23 起) |
constexpr explicit /*iterator*/ ( const W* value, /*index-type*/ b = /*index-type*/() ); |
(2) | (自 C++23 起) (仅供说明*) |
构造一个迭代器。重载 (2) 由 begin()
和 end()
调用 ranges::repeat_view
.
std::ranges::repeat_view::iterator::operator*
constexpr const W& operator*() const noexcept; |
(自 C++23 起) | |
返回 *value_
.
std::ranges::repeat_view::iterator::operator[]
constexpr const W& operator[]( difference_type n ) const noexcept; |
(自 C++23 起) | |
返回 *(*this + n).
std::ranges::repeat_view::iterator::operator++
constexpr /*iterator*/& operator++(); |
(1) | (自 C++23 起) |
constexpr void operator++(int); |
(2) | (自 C++23 起) |
1) 等效于 ++
current_
; return *this;.2) 等效于 auto tmp = *this; ++*this; return tmp;.
std::ranges::repeat_view::iterator::operator--
constexpr /*iterator*/& operator--(); |
(1) | (自 C++23 起) |
constexpr /*iterator*/ operator--(int); |
(2) | (自 C++23 起) |
1) 等效于 --
current_
; return *this;.2) 等效于 auto tmp = *this; --*this; return tmp;.
std::ranges::repeat_view::iterator::operator+=
constexpr /*iterator*/& operator+=( difference_type n ); |
(自 C++23 起) | |
等效于 current_
+= n; return *this;.
如果 Bound
不是 std::unreachable_sentinel_t 并且 current_
+ n 为负数,则行为未定义。
std::ranges::repeat_view::iterator::operator-=
constexpr /*iterator*/& operator-=( difference_type n ); |
(自 C++23 起) | |
等效于 current_
-= n; return *this;.
如果 Bound
不是 std::unreachable_sentinel_t 并且 current_
- n 为负数,则行为未定义。
[edit] 非成员函数
operator==, <=>(std::ranges::repeat_view::iterator)
friend constexpr bool operator== ( const /*iterator*/& x, const /*iterator*/& y ); |
(1) | (自 C++23 起) |
friend constexpr auto operator<=> ( const /*iterator*/& x, const /*iterator*/& y ); |
(2) | (自 C++23 起) |
!=
运算符从 operator==
合成。
这些函数对普通的 非限定 或 限定查找不可见,只有当 iterator
是参数的关联类时,才能通过 依赖于参数的查找 找到它们。
operator+(std::ranges::repeat_view::iterator)
friend constexpr /*iterator*/ operator+ ( /*iterator*/ i, difference_type n ); |
(1) | (自 C++23 起) |
friend constexpr /*iterator*/ operator+ ( difference_type n, /*iterator*/ i ); |
(2) | (自 C++23 起) |
等效于 i += n; return i;.
这些函数对普通的 非限定 或 限定查找不可见,只有当 iterator
是参数的关联类时,才能通过 依赖于参数的查找 找到它们。
operator-(std::ranges::repeat_view::iterator)
friend constexpr /*iterator*/ operator- ( /*iterator*/ i, difference_type n ); |
(1) | (自 C++23 起) |
friend constexpr difference_type operator- ( const /*iterator*/& x, const /*iterator*/& y ); |
(2) | (自 C++23 起) |
1) 等效于 i -= n; return i;.
2) 返回 static_cast<
difference_type
>(x.current_
) -
static_cast<difference_type
>(y.current_
).这些函数对普通的 非限定 或 限定查找不可见,只有当 iterator
是参数的关联类时,才能通过 依赖于参数的查找 找到它们。
[edit] 注释
iterator
始终是 random_access_iterator
.