std::ranges:: views:: join_with, std::ranges:: join_with_view
|
定義済みヘッダ
<ranges>
|
||
|
template
<
ranges::
input_range
V,
ranges::
forward_range
Pattern
>
requires
ranges::
view
<
V
>
&&
|
(1) | (C++23以降) |
|
namespace
views
{
inline
constexpr
/* 未指定 */
join_with
=
/* 未指定 */
;
|
(2) | (C++23以降) |
|
呼び出しシグネチャ
|
||
|
template
<
ranges::
viewable_range
R,
class
Pattern
>
requires
/* 下記参照 */
|
(C++23以降) | |
|
template
<
class
Pattern
>
constexpr /* レンジアダプタクロージャ */ join_with ( Pattern && pattern ) ; |
(C++23以降) | |
view
の範囲のビューから平坦化して得られるシーケンスから成るビューを表します。区切り文字は単一の要素または要素のビューであり、ビューの要素間に挿入されます。
join_with_view
は
input_range
をモデル化します。
join_with_view
は以下の場合に
forward_range
をモデル化します:
- ranges:: range_reference_t < V > が参照型であり、かつ
-
Vおよび ranges:: range_reference_t < V > がそれぞれforward_rangeコンセプトを満たすこと。
join_with_view
は以下の場合に
bidirectional_range
をモデル化します:
- ranges:: range_reference_t < V > が参照型である場合、
-
V、 ranges:: range_reference_t < V > 、およびPatternがそれぞれbidirectional_rangeをモデル化する場合、および -
ranges::
range_reference_t
<
V
>
と
Patternがそれぞれcommon_rangeをモデル化する場合。
join_with_view
は以下の場合に
common_range
をモデル化します:
- ranges:: range_reference_t < V > が参照型であり、かつ
-
Vおよび ranges:: range_reference_t < V > がそれぞれforward_rangeおよび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
の制約が不十分だった
|
制約を更新 |
関連項目
|
(C++20)
|
view
の平坦化によって得られるシーケンスからなる
view
(クラステンプレート) (range adaptor object) |
適応された
view
の連結からなる
view
(クラステンプレート) (customization point object) |