std::ranges::elements_view<V,N>::iterator

来自cppreference.com
 
 
范围库
范围适配器
 
 
<tbody> </tbody>
template< bool Const > class /*iterator*/;
(仅用于阐述*)

elements_view::begin 的返回类型,及 elements_view::end 在底层类型为 common_range 时的返回类型。

const 限定重载返回 /*iterator*/<true>。非 const 限定重载返回 /*iterator*/<false>

成员类型

成员类型 定义
Base (私有) Consttrue 则为 const V,否则为 V
(仅用于阐述的成员类型*)
iterator_concept 代表:
  • 否则若 Base 实现 random_access_range 则该类型为 std::random_access_iterator_tag
  • 否则若 Base 实现 bidirectional_range 则该类型为 std::bidirectional_iterator_tag
  • 否则若 Base 实现 forward_range 则该类型为 std::forward_iterator_tag
  • 否则该类型为 std::input_iterator_tag
iterator_category
(有条件提供)
Base 不实现 forward_range 则未予定义。
  • 否则若 std::get<N>(*current_) 是右值则改类型为 std::input_iterator_tag
  • 否则,令 C 为类型 std::iterator_traits<std::iterator_t<Base>>::iterator_category。则若 C 实现 std::derived_from<std::random_access_iterator_tag> 则该类型为 std::random_access_iterator_tag
  • 否则该类型为 C
value_type std::remove_cvref_t<std::tuple_element_t<N, ranges::range_value_t<Base>>>
difference_type ranges::range_difference_t<Base>

数据成员

成员对象 定义
current_ (私有) 指向底层序列的当前元素的 ranges::iterator_t<Base> 类型的迭代器。
(仅用于阐述的成员对象*)

成员函数

构造迭代器
(公开成员函数)
返回底层迭代器
(公开成员函数)
访问第 N 个元组元素
(公开成员函数)
按索引访问元素
(公开成员函数)
推进或减小底层迭代器
(公开成员函数) [编辑]

非成员函数

比较底层迭代器
(函数)
进行迭代器算术
(函数)

缺陷报告

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

缺陷报告 应用于 出版时的行为 正确行为
P2259R1 C++20 始终定义成员 iterator_category 仅若 Base 实现 forward_range 才定义
LWG 3555 C++20 iterator_concept 的定义忽略 const 使之考虑

参阅

(C++20)
ranges::transform_view::begin 的返回类型,以及当底层视图是 common_range 时为 ranges::transform_view::end 的返回类型
(私有成员类模板) [编辑]