single_view
クラス (C++ 標準ライブラリ)
要素が 1 つしかないビュー。 このビューは、少なくとも 1 つの要素を含むビューを提供する必要があるコードを呼び出すテスト目的で役立ちます。
構文
template<std::copy_constructible T>
requires std::is_object_v<T>
class single_view : public ranges::view_interface<single_view<T>>
テンプレート パラメーター
T
要素の型。
特性の表示
以下の項目の説明については、 View クラスの特性を参照してください。
特徴 | 説明 |
---|---|
範囲アダプター | views::single |
基になる範囲 | なし |
要素の種類 | single_view の作成時に指定します |
反復子カテゴリの表示 | contiguous_range |
サイズ | 常に 1 を返します。 |
const 対応 |
はい |
共通範囲 | はい |
借用範囲 | いいえ |
メンバー
メンバー関数 | 説明 |
---|---|
コンストラクターC++20 | single_view を構築します。 |
begin C++20 |
要素を指す反復子を取得します。 |
data C++20 |
要素へのポインターを取得します。 |
end C++20 |
ビューの最後にあるセンチネルを取得します。 |
size C++20 |
要素の数を取得します。 常に 1 を返します。 |
継承の対象 view_interface |
説明 |
back C++20 |
要素を取得します。 |
empty C++20 |
ビューが空かどうかをテストします (常に false を返します)。 |
front C++20 |
要素を取得します。 |
operator[] C++20 |
指定した位置にある要素を取得します (位置 0 のみが有効です)。 |
operator bool C++20 |
ビューが空でないかどうかをテストします (常に false を返します)。 |
解説
single_view
を作成する最善の方法は、views::single
範囲アダプターを使用することです。 範囲アダプターは、ビュー クラスを作成するための目的の方法です。 独自のカスタム ビューの種類を作成する場合は、ビューの種類が公開されます。
テンプレート値がconst
されていない限り、single_view
の値を変更できます。 (例: single_view<const float> sv{3.14} // this value can't be modified because it's const
)。
要件
Header: <ranges>
(C++20 以降)
名前空間: std::ranges
コンパイラ オプション: /std:c++20
以降が必要です。
コンストラクター
single_view
のインスタンスを作成します。
1) single_view() = default;
2) constexpr explicit single_view(const T& t);
3) constexpr explicit single_view(T&& t);
4) template<class... Args>
requires constructible_from<T, Args...>
constexpr single_view(in_place_t, Args&&... args);
パラメーター
t
要素の値。
テンプレート パラメーターの型の詳細については、「 Template パラメーターを参照してください。
解説
single_view
を作成する最善の方法は、views::single
範囲アダプターを使用することです。
1) 既定で構築された、指定した型の 1 つの要素を持つ single_view
を作成します。 たとえば、single_view<float> sv{}
は、0.0
に対して既定で構築されたfloat
型の単一の要素を持つsingle_view
を作成します。
2) 指定した引数からコピー初期化される、指定した型の単一の要素を持つ single_view
を作成します。 たとえば、single_view<myObjectType> sv{myObject}
は、引数からコピー初期化されるmyObjectType
型の単一の要素を持つsingle_view
を作成します。
3) 引数から移動初期化される指定した型の単一の要素を持つ single_view
を作成します。
4) (std::forward<Args>(args)...)
で初期化された指定した型の単一の要素を持つsingle_view
を作成します。
例 single_view
/// requires /std:c++20 or higher
#include <ranges>
#include <iostream>
#include <string>
#include <tuple>
int main()
{
std::ranges::single_view<int> sv{7};
std::cout << sv.front() << " " << *sv.data() << "\n"; // 7 7
std::ranges::single_view<std::tuple<int, std::string>> sv2{{6502, "8-bit"}};
std::cout << std::get<0>(sv2[0]) << " " << std::get<1>(sv2[0]) << "\n"; // 6502 8-bit
}
7 7
6502 8-bit
begin
ビュー内の 1 つの要素へのポインターを取得します。
constexpr T* begin() noexcept;
constexpr const T* begin() const noexcept;
パラメーター
ありません。
戻り値
single_view
内の 1 つの要素へのポインター。
data
single_view
内の 1 つの要素へのポインターを取得します。
constexpr T* data() noexcept;
constexpr const T* data() const noexcept;
パラメーター
ありません。
戻り値
single_view
内の要素へのポインター。
end
要素の後のセンチネルへのポインターを取得します。
constexpr T* end() noexcept;
constexpr const T* end() const noexcept;
パラメーター
ありません。
戻り値
要素に続くセンチネルへのポインター。
size
ビュー内の要素の数を取得します。 常に 1
を返します。
static constexpr size_t size() noexcept;
パラメーター
ありません。
戻り値
1