名前空間
変種
操作

std::ranges::views::join_with, std::ranges::join_with_view

From cppreference.com
< cpp‎ | ranges
 
 
Rangesライブラリ
Rangeアダプタ
 
 
ヘッダ <ranges> で定義
template< ranges::input_range V, ranges::forward_range Pattern >

  requires ranges::view<V> &&
           ranges::input_range<ranges::range_reference_t<V>> &&
           ranges::view<Pattern> &&
           /*concatable*/<ranges::range_reference_t<V>, Pattern>
class join_with_view :

    ranges::view_interface<join_with_view<V, Pattern>>
(1) (C++23から)
namespace views {

    inline constexpr /* unspecified */ join_with = /* unspecified */;

}
(2) (C++23から)
呼び出しシグネチャ
template< ranges::viewable_range R, class Pattern >

    requires /* 以下を参照 */

constexpr ranges::view auto join_with( R&& r, Pattern&& pattern );
(C++23から)
template< class Pattern >
constexpr /* range adaptor closure */ join_with( Pattern&& pattern );
(C++23から)
1) 区切りのすべての要素がビューの要素間に挿入された、範囲のビューを平坦化することによって得られるシーケンスからなるviewを表す範囲アダプタ。区切りは単一の要素または要素のビューにすることができます。
/*concatable*/の定義については、std::ranges::concat_viewを参照してください。
2) RangeAdaptorObjectviews::join_with(e, f)という式は、任意の適切な部分式efに対して式等価ですjoin_with_view(e, f)

join_with_viewinput_rangeをモデル化します。

join_with_viewは、以下の場合にforward_rangeをモデル化します。

join_with_viewは、以下の場合にbidirectional_rangeをモデル化します。

join_with_viewは、以下の場合にcommon_rangeをモデル化します。

目次

[編集] 入れ子型

定義
InnerRng ranges::range_reference_t<V>
(説明専用メンバ型*)

[編集] データメンバ

メンバ 定義
V base_ 基となる(適応された)ビュー
(説明用のメンバオブジェクト*)
Pattern pattern_ パターンオブジェクト
(説明用のメンバオブジェクト*)
non-propagating-cache <ranges::iterator_t<V>> outer_it_
Vforward_rangeをモデル化しない場合にのみ存在)
外側のイテレータのキャッシュ
(説明用のメンバオブジェクト*)
non-propagating-cache <std::remove_cv_t<InnerRng >> inner_
std::is_reference_v<InnerRng >falseの場合にのみ存在)
内側の範囲のキャッシュ
(説明用のメンバオブジェクト*)

[編集] メンバ関数

join_with_viewを構築します
(public メンバ関数) [編集]
基になる(適応された)ビューのコピーを返す
(public member function) [編集]
先頭へのイテレータを返す
(public メンバ関数) [編集]
終端へのイテレータまたはセンチネルを返す
(public メンバ関数) [編集]
std::ranges::view_interface から継承
派生ビューが空かどうかを返す。sized_range または forward_range を満たす場合にのみ提供される
(std::ranges::view_interface<D> の public メンバ関数) [編集]
(C++23)
範囲の先頭への定数イテレータを返す
(std::ranges::view_interface<D> の public メンバ関数) [編集]
(C++23)
範囲の定数イテレータの番兵を返す
(std::ranges::view_interface<D> の public メンバ関数) [編集]
派生ビューが空でないかどうかを返す。ranges::empty が適用可能な場合にのみ提供される
(std::ranges::view_interface<D> の public メンバ関数) [編集]
派生ビューが forward_range を満たす場合に、派生ビューの最初の要素を返す
(std::ranges::view_interface<D> の public メンバ関数) [編集]
派生ビューが bidirectional_rangecommon_range の両方を満たす場合にのみ、派生ビューの最後の要素を返す
(std::ranges::view_interface<D> の public メンバ関数) [編集]

[編集] 推論ガイド

[編集] 入れ子クラス

イテレータ型
(説明専用メンバクラステンプレート*)
センチネル型
(説明専用メンバクラステンプレート*)

[編集] 備考

機能テストマクロ 規格 機能
__cpp_lib_ranges_join_with 202202L (C++23) std::ranges::join_with_view

[編集]

#include <iostream>
#include <ranges>
#include <string_view>
#include <vector>
 
int main()
{
    using namespace std::literals;
 
    std::vector v{"This"sv, "is"sv, "a"sv, "test."sv};
    auto joined = v | std::views::join_with(' ');
 
    for (auto c : joined)
        std::cout << c;
    std::cout << '\n';
}

出力

This is a test.

[編集] 欠陥レポート

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 4074 C++23 join_with_viewは制約が不十分だった 制約が更新されました

[編集] 関連項目

rangeviewをフラット化して得られるシーケンスからなる view
(クラステンプレート) (rangeアダプタオブジェクト)[編集]
適合するviewを連結して構成される view
(クラステンプレート) (カスタマイゼーションポイントオブジェクト)[編集]
English 日本語 中文(简体) 中文(繁體)