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_range sized_range |
サイズ | 基になる範囲が満たされる場合のみ sized_range |
const 対応 |
基になる範囲が const 可能な場合のみ |
共通範囲 | はい |
借用範囲 | 基になる範囲が満たされる場合のみ borrowed_range |
メンバー
メンバー関数 | 説明 |
---|---|
コンストラクターC++20 | common_view を構築します。 |
base C++20 |
基になるビューを取得します。 |
begin C++20 |
ビューの最初の要素を指す反復子を取得します。 |
end C++20 |
ビューの最後にあるセンチネルを取得します。 |
size C++20 |
ビュー内の要素の数を取得します。 |
継承の対象 view_interface |
説明 |
back C++20 |
最後の要素を取得します。 |
data C++20 |
最初の要素へのポインターを取得します。 |
empty C++20 |
ビューが空かどうかをテストします。 |
front C++20 |
最初の要素を取得します。 |
operator[] C++20 |
指定した位置にある要素を取得します。 |
operator bool C++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>;
戻り値
ビューの最初の要素を指す反復子:
end
ビューの最後にあるセンチネルを取得します。
constexpr auto end();
constexpr auto end() const requires ranges::range<const V>;
戻り値
ビューの最後の要素に続く Sentinel:
size
ビュー内の要素の数を取得します。
constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;
パラメーター
ありません。
戻り値
ビュー内の要素の数。