名前空間
変種
操作

std::ranges::concat_view<Views...>::iterator

From cppreference.com
< cpp‎ | ranges‎ | concat view
 
 
Rangesライブラリ
Rangeアダプタ
 
 
template< bool Const >
class /*iterator*/
(1) (説明用*)
ヘルパーコンセプト
template< bool Const, class... Rs >
concept /*concat-is-random-access*/ = /* see description */;
(2) (説明用*)
template< bool Const, class... Rs >
concept /*concat-is-bidirectional*/ = /* see description */;
(3) (説明用*)
1) ranges::concat_view<Views...>::iterator は、ranges::concat_view<Views...>begin() および end() によって返されるイテレータの型です。
2) Fs を、Rs の最後の要素を除くすべての要素からなるパックとする。これは以下と同等です。

template<bool Const, class... Rs>
concept concat-is-random-access = // exposition only
    all-random-access <Const, Rs...> &&
    (ranges::common_range<maybe-const <Const, Fs>> && ...);

.
3) Fs を、Rs の最後の要素を除くすべての要素からなるパックとする。これは以下と同等です。

template<bool Const, class... Rs>
concept concat-is-bidirectional = // exposition only
    all-bidirectional <Const, Rs...> &&
    (ranges::common_range<maybe-const <Const, Fs>> && ...);

.

目次

[edit] Template parameters

Const - イテレータが定数イテレータであるかどうか

[edit] Nested types

公開専用型
定義
base-iter std::variant<ranges::iterator_t<maybe-const <Const, Views>>...>
(説明専用メンバ型*)
イテレータプロパティ型
定義
iterator_concept イテレータタグ、下記参照
iterator_category
(条件付きで存在)
イテレータタグ、下記参照
value_type concat-value-t <maybe-const <Const, Views>...>
difference_type

std::common_type_t<ranges::range_difference_t<maybe-const <Const, Views>>...>

[edit] Determining the iterator concept

iterator_concept は以下のように定義されます。

[edit] Determining the iterator category

iterator_category は、all-forward <Const, Views...> がモデル化されている場合にのみ定義されます。その場合、以下のように定義されます。

[edit] Data members

メンバ 定義
maybe-const <Const, ranges::concat_view>* parent_ 親の concat_view へのポインタ
(説明用のメンバオブジェクト*)
base-iter it_ 現在のビュー内のイテレータ
(説明用のメンバオブジェクト*)

[edit] Member functions

イテレータを構築する
(public member function)
要素にアクセスします
(public member function)
インデックスで要素にアクセスする
(public member function)
基底イテレータを進めたり、後退させたりします。
(public member function) [編集]
Exposition-only function templates
it_ が現在のビューの終端である場合、次のビューの先頭に it_ を置き換えます。
(説明専用メンバ関数*)
it_ をデクリメントして、前の位置を指すようにします。
(説明専用メンバ関数*)
指定されたオフセットで現在の位置を進めます。
(説明専用メンバ関数*)
指定された値で現在の位置をデクリメントします。
(説明専用メンバ関数*)

[edit] Non-member functions

基底イテレータを比較する
(関数)
イテレータの算術演算を実行します。
(関数)
(C++26)
基底イテレータの間接参照の結果を関連する右辺値参照型にキャストする
(関数)
(C++26)
2つの基底イテレータが指すオブジェクトをスワップする
(関数)

[edit] Example

予備的なバージョンは Compiler Explorer で確認できます。

#include <iostream>
#include <iterator>
#include <ranges>
 
int main()
{
    namespace views = std::views;
    static constexpr int p[]{1, 2, 3};
    static constexpr auto e = {4, 5};
    auto t = views::iota(6, 9);
    auto cat = views::concat(p, e, t);
    auto dog = views::concat(cat, cat);
    for (auto i{dog.begin()}; i != std::default_sentinel; ++i)
        std::cout << *i << ' ';
    std::cout << '\n';
}

出力

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

[edit] References

  • C++26 標準 (ISO/IEC 14882:2026)
  • 26.7.18.3 Class template concat_view::iterator [range.concat.iterator]
English 日本語 中文(简体) 中文(繁體)