名稱空間
變體
操作

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

來自 cppreference.com
< cpp‎ | ranges
 
 
範圍庫 (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 /* unspecified */ join_with = /* unspecified */;

}
(2) (C++23 起)
呼叫簽名 (Call signature)
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) RangeAdaptorObject。對於任何合適的子表示式 ef,表示式 views::join_with(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
(公共成員函式) [編輯]
返回底層(適配)檢視的副本
(公共成員函式) [編輯]
返回指向起始的迭代器
(公共成員函式) [編輯]
返回一個迭代器或一個哨兵到末尾
(公共成員函式) [編輯]
繼承自 std::ranges::view_interface
返回派生檢視是否為空,僅當它滿足 sized_rangeforward_range 時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
(C++23)
返回範圍開頭的常量迭代器
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
(C++23)
返回範圍常量迭代器的哨兵
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視是否非空,僅當 ranges::empty 適用於它時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視中的第一個元素,如果它滿足 forward_range 則提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]
返回派生檢視的最後一個元素,僅當它滿足 bidirectional_rangecommon_range 時提供
(std::ranges::view_interface<D> 的公共成員函式) [編輯]

[編輯] 推導指南

[編輯] 巢狀類

迭代器型別
(僅用於說明的成員類模板*)
哨兵型別
(僅用於說明的成員類模板*)

[編輯] 注意

特性測試 標準 特性
__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++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 4074 C++23 join_with_view 約束不足 更新了約束

[編輯] 另請參見

一個 view,由展平 rangesview 後得到的序列組成
(類模板) (範圍介面卡物件)[編輯]
一個 view,由連線的介面卡檢視組成
(類模板) (定製點物件)[編輯]