Namespaces
Variants

std::ranges::concat_view<视图...>::迭代器<Const>::满足, 上一步, 前进-正向, 前进-反向

来自 zh.cppreference.net
 
 
范围库
范围适配器
 
 

以下仅用于说明的成员函数模板简化了描述。

每个辅助函数模板都有一个类型为 std::size_t 的非类型模板参数。

  • 如果模板参数的名称为 N,则模板实参始终为 it_ .index()。
  • 如果模板参数的名称为 I,则模板实参可以是 std::size_t 在 [0, sizeof...(Views)) 中的任意值。

然而,模板实参可能不是编译时常量,因此 helper <non_const>(/* arguments */) 的实际效果与 if (non_const == 0)
    helper <0>(/* arguments */);
else if (non_const == 1)
    helper <1>(/* arguments */);
/* other indices */
else if (non_const == (sizeof...(Views) - 1))
    helper <sizeof...(Views) - 1>(/* arguments */);
类似。

辅助模板

微型辅助模板

template < std:: size_t N >
constexpr auto /*get-iter*/ ( ) ;
(1) ( 仅用于说明* )
template < std:: size_t I >
constexpr auto /*get-view*/ ( ) ;
(2) ( 仅用于说明* )
template < std:: size_t I >
constexpr auto /*get-begin*/ ( ) ;
(3) ( 仅用于说明* )
template < std:: size_t I >
constexpr auto /*get-end*/ ( ) ;
(4) ( 仅用于说明* )
template < std:: size_t N >
constexpr auto /*to-underlying-diff-type*/ ( difference_type value ) ;
(5) ( 仅用于说明* )

微型辅助模板简化了主要辅助模板和成员函数的描述。它们不包含在C++标准文档中。

1) 获取包含在 it_  中的底层迭代器。
返回 std::get < N > ( it_  ) 。
2) 获取父级 concat_view 中的第 I 个视图。
返回 std::get < I > ( parent_  - > views_  ) 。
3) 获取父级 concat_view 中第 I 个视图的起始迭代器。
返回 ranges:: begin ( get-view  < I > ( ) ) 。
4) 获取父级 concat_view 中第 I 个视图的尾后迭代器或哨兵。
返回 ranges:: end ( get-view  < I > ( ) ) 。
5) 将 value 转换为包含在 it_  中的底层迭代器的底层差异类型。
返回 static_cast < std:: iter_difference_t < std:: variant_alternative_t < N, base-iter  >>> ( value ) 。

std::ranges::concat_view:: iterator :: satisfy <N>

template < std:: size_t N >
constexpr void /*satisfy*/ ( ) ;
( 仅用于说明* )

调整 it_ 的当前(全局)位置。

  • 如果 N 等于 sizeof... ( Views ) - 1 ,则不执行任何操作。
  • 否则,等效于 if ( get-iter  < N > ( ) == get-end  < N > ( ) )
    {
    it_  . template emplace < N + 1 > ( get-begin  < N + 1 > ( ) ) ;
    satisfy  < N + 1 > ( ) ;
    }
    。

std::ranges::concat_view:: iterator :: prev <N>

template < size_t N >
constexpr void /*prev*/ ( ) ;
( 仅用于说明* )

将 it_ 移动到前一个(全局)位置。

  • 如果 N 为 ​ 0 ​ ,等价于 -- get-iter  < 0 > ( ) ; 。
  • 否则,等价于 if ( get-iter  < N > ( ) == get-begin  < N > ( ) )
    {
    it_  . template emplace < N - 1 > ( get-end  < N - 1 > ( ) ) ;
    prev  < N - 1 > ( ) ;
    }
    else
    -- get-iter  < N > ( ) ;
    。

std::ranges::concat_view:: iterator :: advance-fwd <N>

template < size_t N >

constexpr void /*advance-fwd*/ ( difference_type offset,

difference_type steps ) ;
( 仅用于说明* )

将当前(全局)位置向前推进 step 步。

参数

offset - 当前(全局)位置距离 it_ 当前所指范围的起始处的偏移量
steps - 要向前推进的步数

std::ranges::concat_view:: iterator :: advance-bwd <N>

template < size_t N >

constexpr void /*advance-bwd*/ ( difference_type offset,

difference_type steps ) ;
( 仅用于说明* )

将当前(全局)位置向后移动 steps 步。

参数

offset - 当前(全局)位置距离 it_ 当前所指范围的起始处的偏移量
steps - 向后移动的步数