次の方法で共有


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 を構築します。
beginC++20 要素を指す反復子を取得します。
dataC++20 要素へのポインターを取得します。
endC++20 ビューの最後にあるセンチネルを取得します。
sizeC++20 要素の数を取得します。 常に 1 を返します。
継承の対象 view_interface 説明
backC++20 要素を取得します。
emptyC++20 ビューが空かどうかをテストします (常に falseを返します)。
frontC++20 要素を取得します。
operator[]C++20 指定した位置にある要素を取得します (位置 0 のみが有効です)。
operator boolC++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

関連項目

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