次の方法で共有


common_view クラス (C++ 標準ライブラリ)

反復子とセンチネルの種類が異なる範囲を取得し、同じ反復子とセンチネル型を持つビューを作成します。 これは、反復子ペアで指定された範囲を受け入れる STL アルゴリズムを呼び出す場合に便利です。

構文

template<ranges::view V>
    requires (!ranges::common_range<V> && std::copyable<ranges::iterator_t<V>>)
class common_view : public ranges::view_interface<common_view<V>>;

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

V
基になるビューの型。

特性の表示

以下の項目の説明については、 View クラスの特性を参照してください。

特徴 説明
範囲アダプター views::common
基になる範囲 forward_range以上を満たす必要があります
要素の種類 基になる範囲と同じ
反復子カテゴリの表示 forward_rangeまたは基になる範囲がrandom_access_rangeを満たす場合にrandom_access_rangesized_range
サイズ 基になる範囲が満たされる場合のみ sized_range
const対応 基になる範囲が const 可能な場合のみ
共通範囲 はい
借用範囲 基になる範囲が満たされる場合のみ borrowed_range

メンバー

メンバー関数 説明
コンストラクターC++20 common_view を構築します。
baseC++20 基になるビューを取得します。
beginC++20 ビューの最初の要素を指す反復子を取得します。
endC++20 ビューの最後にあるセンチネルを取得します。
sizeC++20 ビュー内の要素の数を取得します。
継承の対象 view_interface 説明
backC++20 最後の要素を取得します。
dataC++20 最初の要素へのポインターを取得します。
emptyC++20 ビューが空かどうかをテストします。
frontC++20 最初の要素を取得します。
operator[]C++20 指定した位置にある要素を取得します。
operator boolC++20 ビューが空でないかどうかをテストします。

解説

common_viewを作成する最善の方法は、views::common範囲アダプターを使用することです。 範囲アダプターは、ビュー クラスを作成するための目的の方法です。 独自のカスタム ビューの種類を作成する場合は、ビューの種類が公開されます。

このビューは、異なる反復子/sentinel 型を持つ範囲を、同じであることを想定するレガシ アルゴリズムに渡す場合に役立ちます。

要件

Header: <ranges> (C++20 以降)

名前空間: std::ranges

コンパイラ オプション: /std:c++20 以降が必要です。

コンストラクター

common_view のインスタンスを作成します。

1) common_view() = default;
2) constexpr explicit common_view(V v);

パラメーター

v
基になるビュー。

テンプレート パラメーターの型の詳細については、「 Template パラメーターを参照してください。

解説

1) 既定では、 common_viewが構築されます。
2) std::move(v)を使用して、基になるビューからcommon_viewを構築します。 Vがパフォーマンスに悪影響を与える誤用を避けるために一般的な範囲である場合、エラーが発生します。

base

基になるビューのコピーを取得します。

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

begin

最初の要素を指す反復子を取得します。

constexpr auto begin();
constexpr auto begin() const requires range<const V>;

戻り値

ビューの最初の要素を指す反復子:

要素 10、20、30 を持つベクトルの図。最初の要素には 10 が含まれており、begin() というラベルが付いています。最後の要素には 30 が含まれており、

end

ビューの最後にあるセンチネルを取得します。

constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;

戻り値

ビューの最後の要素に続く Sentinel:

要素 10、20、30 を持つベクトルの図。最初の要素には 10 が含まれており、begin() というラベルが付いています。最後の要素には 30 が含まれており、

size

ビュー内の要素の数を取得します。

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

パラメーター

ありません。

戻り値

ビュー内の要素の数。

関連項目

<ranges>
common 範囲アダプター
クラスの表示