std::ranges::join_with_view<V,Pattern>::iterator

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

ranges::join_with_view<V, Pattern>::iteratorranges::join_with_view<V, Pattern>begin()end() 返回的迭代器的类型。

此类型的迭代器的状态如同包含两个嵌套迭代器:

  • 指向父范围 *parent_ 中的外部迭代器
  • 指向模式 pattern_ 中或父范围的某个子范围中的内部迭代器 inner_it_

此迭代器类具有在外部迭代器可解引用时内部迭代器也保证可解引用的不变式。在构造、自增或自减迭代器时可能会调整外部迭代器以保持不变式。

模板形参

Const - 迭代器是否为常迭代器

嵌套类型

仅用于阐述的类型
名字 定义
Parent maybe-const <Const, ranges::join_with_view<V, Pattern>>
(仅用于阐述的成员类型*)
Base maybe-const <Const, V>
(仅用于阐述的成员类型*)
InnerBase ranges::range_reference_t<Base >
(仅用于阐述的成员类型*)
PatternBase maybe-const <Const, Pattern>
(仅用于阐述的成员类型*)
OuterIter ranges::iterator_t<Base >
(仅用于阐述的成员类型*)
InnerIter ranges::iterator_t<InnerBase >
(仅用于阐述的成员类型*)
PatternIter ranges::iterator_t<PatternBase >
(仅用于阐述的成员类型*)
迭代器属性类型
名字 定义
iterator_concept 迭代器标签见下文
iterator_category
(有条件提供)
迭代器标签,见下文
value_type

std::common_type_t<ranges::range_value_t<InnerBase >,
                   ranges::range_value_t<PatternBase >>

difference_type

std::common_type_t<ranges::range_difference_t<Base >,
                   ranges::range_difference_t<InnerBase >,
                   ranges::range_difference_t<PatternBase >>

确定迭代器概念

iterator_concept 定义如下:

确定迭代器类别

给定以下类型:

iterator_category 当且仅当 std::is_reference_v<InnerBase >true,且 BaseInnerBase 都实现了 forward_range 时才有定义。这种情况下它定义如下:

数据成员

成员 描述
Parent* parent_ 指向父 join_with_view 的指针
(仅用于阐述的成员对象*)
OuterIter outer_it_
(仅当 Base 实现 forward_range 时提供)
外部迭代器
(仅用于阐述的成员对象*)
std::variant<PatternIter , InnerIter > inner_it_ 内部迭代器
(仅用于阐述的成员对象*)

成员函数

构造迭代器
(公开成员函数)
访问元素
(公开成员函数)
推进或减小底层迭代器
(公开成员函数)

非成员函数

比较底层迭代器
(函数)
(C++23)
将解引用底层迭代器的结果转型到它关联的右值引用类型
(函数)
(C++23)
交换两个底层迭代器所指向的对象
(函数)