最終更新日時(UTC):
が更新

履歴 編集

class template
<ranges>

std::ranges::join_view(C++20)

namespace std::ranges {
  template<input_range V>
    requires view<V> && input_range<range_reference_t<V>>
  class join_view : public view_interface<join_view<V>> { …… }; // (1)

  namespace views {
    inline constexpr /*unspecified*/ join = /*unspecified*/;      // (2)
  }
}

概要

  • (1): 要素がRangeであるRangeの各要素を繋げて1つのRangeとして扱うview
  • (2): join_viewを生成するRangeアダプタオブジェクト

Rangeコンセプト

borrowed sized output input forward bidirectional random_access contiguous common viewable view
(1) (2) (3)
  • (1): 外側・内側のRangeがforward_rangeであり、内側Rangeが参照型のとき
  • (2): 外側・内側のRangeがbidirectional_rangeであり、内側Rangeが参照型かつcommon_rangeであるとき
  • (3): 外側・内側のRangeがforward_rangeかつcommon_rangeであり
    • constではない場合、内側のRangeは参照型(prvalueではない)

外側RangeとはVのことであり、内側Rangeとはrange_reference_t<V>のことである。constの場合Vconst Vとして同様。

テンプレートパラメータ制約

効果

  • (2): 式views::join(E)の効果はjoin_view{E}と等しい。

メンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++20
base Vの参照を取得する C++20
begin 先頭を指すイテレータを取得する C++20
end 番兵を取得する C++20

継承しているメンバ関数

名前 説明 対応バージョン
empty Rangeが空かどうかを判定する C++20
operator bool Rangeが空でないかどうかを判定する C++20
front 先頭要素への参照を取得する C++20
back 末尾要素への参照を取得する C++20
cbegin 定数イテレータを取得する C++23
cend 定数イテレータ(番兵)を取得する C++23

推論補助

名前 説明 対応バージョン
(deduction_guide) クラステンプレートの推論補助 C++20

#include <ranges>
#include <vector>
#include <string>
#include <iostream>

int main() {
  using namespace std;
  vector<string> sv = {"hello", "world"};

  for (char c : sv | views::join) {
    cout << c << ',';
  }
  cout << '\n';
}

出力

h,e,l,l,o,w,o,r,l,d,

ネストされた char のRangeが平坦な char のRangeになっている。

バージョン

言語

  • C++20

処理系

関連項目

参照