Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
定義済みヘッダ <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 /* 未指定 */ join_with = /* 未指定 */ ;

}
(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 /* レンジアダプタクロージャ */ join_with ( Pattern && pattern ) ;
(C++23以降)
1) 範囲アダプタで、 view の範囲のビューから平坦化して得られるシーケンスから成るビューを表します。区切り文字は単一の要素または要素のビューであり、ビューの要素間に挿入されます。
/*concatable*/ の定義については、 std::ranges::concat_view を参照してください。
2) RangeAdaptorObject 。式 views :: join_with ( e, f ) は、任意の適切な部分式 e および f に対して 式等価 である join_with_view ( e, f ) となる。

join_with_view input_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_
V forward_range をモデル化しない場合のみ存在)
外部イテレータのキャッシュ
( 説明専用メンバーオブジェクト* )
non-propagating-cache  < std:: remove_cv_t < InnerRng  >> inner_
std:: is_reference_v < InnerRng  > false の場合のみ存在)
内部レンジのキャッシュ
( 説明専用メンバーオブジェクト* )

メンバー関数

join_with_view を構築する
(public member function)
基盤となる(アダプトされた)ビューのコピーを返す
(public member function)
先頭を指すイテレータを返す
(public member function)
終端を指すイテレータまたはセンチネルを返す
(public member function)
std::ranges::view_interface から継承
派生ビューが空かどうかを返す( sized_range または forward_range を満たす場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)
(C++23)
範囲の先頭を指す定数イテレータを返す
( std::ranges::view_interface<D> のpublic member function)
(C++23)
範囲の定数イテレータ用センチネルを返す
( std::ranges::view_interface<D> のpublic member function)
派生ビューが空でないかどうかを返す( ranges::empty が適用可能な場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの最初の要素を返す( forward_range を満たす場合に提供)
( std::ranges::view_interface<D> のpublic member function)
派生ビューの最後の要素を返す( bidirectional_range および common_range を満たす場合にのみ提供)
( std::ranges::view_interface<D> のpublic member function)

推論ガイド

ネストされたクラス

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

注記

機能テスト マクロ 標準 機能
__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 の制約が不十分だった 制約を更新

関連項目

view の平坦化によって得られるシーケンスからなる view
(クラステンプレート) (range adaptor object)
適応された view の連結からなる view
(クラステンプレート) (customization point object)