Aracılığıyla paylaş


empty_view class (C++ Standart Kitaplığı)

Öğe içermeyen bir görünüm. Bu görünüm, bir görünümle sağlanması gereken ancak temel alınan verilere erişmesi gerekmeyen kodu çağırma gibi test amaçları için kullanışlıdır.

Sözdizimi

template<class T>
    requires std::is_object_v<T>
class empty_view : public ranges::view_interface<empty_view<T>>;

Şablon parametreleri

T
Öğesinin türü. içinde empty_viewöğe olmasa da, tüm aralıklar homojendir. Başka bir ifadeyle, belirli bir türe sahip öğeleri vardır. Bu nedenle, öğesi empty_view olmasa da, yine de , veya stringsgibi bir empty_view inttürü vardır.

Özellikleri görüntüleme

Aşağıdaki girdilerin açıklaması için bkz . Sınıf özelliklerini görüntüleme

Characteristic Açıklama
Aralık bağdaştırıcısı views::empty
Temel alınan aralık Hiçbiri
Öğe türü Oluşturulduğunda belirtildiği empty_view gibi
Yineleyici kategoriyi görüntüleme contiguous_range
Boyutlu Evet. Her zaman 0 döndürür
- constyinelenebilir Yes
Ortak aralık Yes
Ödünç alınan aralık Yes

Üyeler

Üye işlevleri Açıklama
OluşturucularC++20 oluşturma empty_view.
beginC++20 nullptr döndürür.
endC++20 nullptr döndürür.
sizeC++20 0 döndürür
Devralınan view_interface Açıklama
backC++20 Tanımsız davranışla sonuçlanır.
dataC++20 nullptr döndürür.
emptyC++20 true döndürür.
frontC++20 Tanımsız davranışla sonuçlanır.
operator[]C++20 Tanımsız davranışla sonuçlanır.
operator boolC++20 false döndürür.

Açıklamalar

Oluşturmanın empty_view en iyi yolu, aralık bağdaştırıcısını empty kullanmaktır. Aralık bağdaştırıcıları, görünüm sınıfları oluşturmanın amaçlanan yoludur. Kendi özel görünüm türünüzü oluşturmak istemeniz durumunda görünüm türleri kullanıma sunulur.

bir içinde empty_viewhiçbir zaman öğe olmadığından, belirli derleyici iyileştirmeleri mümkündür. Örneğin, yinelenecek bir şey olmadığını bildiği için derleyici ortadan kaldırır for (auto e : std::views::empty<int>) {...} .

için empty_view başka bir empty_view kullanım, bir sınırlayıcı ile bölmektir split_view ve bu da bir dizi tek öğe aralığıyla sonuçlanır.

Gereksinimler

Üst bilgi: <ranges> (C++20'den beri)

Ad alanı: std::ranges

Derleyici Seçeneği: /std:c++20 veya üzeri gereklidir.

Oluşturucular

Bir empty_view örneği oluşturun.

template<class T>
inline constexpr empty_view<T> empty{};

Parametreler

T
Temel alınan öğenin türü; bunların hiçbiri yoktur.

Açıklamalar

Oluşturmanın empty_view en iyi yolu, aralık bağdaştırıcısını empty kullanmaktır.

Örnek empty_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>

int main()
{
    auto anEmptyView = std::views::empty<int>;
    bool isNotEmpty = (bool)anEmptyView;
    std::cout << std::boolalpha << isNotEmpty << "\n"; // false
    std::cout << std::boolalpha << anEmptyView.empty(); // true
}
false
true

back

Tanımsız davranışla sonuçlanır.

constexpr auto back()
    requires ranges::bidirectional_range<T> && ranges::common_range<T>;

constexpr auto back() const
    requires ranges::bidirectional_range<const T> && ranges::common_range<const T>;

Parametreler

Hiçbiri.

Dönüş değeri

Yok.

Açıklamalar

Bu işlevin bir hata ayıklama derlemesinde çağrılması, işlevin boş view_interfacebir üzerinde çağrıldığını belirten bir onay oluşturur.

begin

Görünümde ilk öğe olmadığından döndürür nullptr .

static constexpr T* begin() noexcept

Dönüş değeri

nullptr

data

Görünümde işaretçinin alındığı ilk öğe olmadığından döndürür nullptr .

static constexpr T* data() noexcept

Dönüş değeri

nullptr.

empty

Türetilmiş görünümün boş olup olmadığını test edin.

static constexpr bool empty() noexcept

Parametreler

Hiçbiri.

Dönüş değeri

true döndürür.

end

Görünümde öğe olmadığından döndürür nullptr .

static constexpr T* end() noexcept

Dönüş değeri

nullptr.

front

Tanımsız davranışla sonuçlanır.

constexpr auto front()
    requires ranges::forward_range<T>;
constexpr auto front() const
    requires ranges::forward_range<const T>;

Parametreler

Hiçbiri.

Dönüş değeri

Yok.

Açıklamalar

Bu işlevin bir hata ayıklama derlemesinde çağrılması, işlevin boş view_interfacebir üzerinde çağrıldığını belirten bir onay oluşturur.

operator[]

Tanımsız davranışla sonuçlanır.

template<ranges::random_access_range R = T>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos);

template<ranges::random_access_range R = const T>
constexpr decltype(auto) operator[](ranges::range_difference_t<R> pos) const;

Parametreler

pos
Döndürülecek öğenin başlangıç yineleyicisine göre konumu.

Dönüş değeri

Yok.

Açıklamalar

Bu işlevin bir hata ayıklama derlemesinde çağrılması, dizinin için view_interfacearalığın dışında olduğuna dair bir onay oluşturur.

operator bool

Türetilmiş görünümün boş olup olmadığını test edin.

constexpr explicit operator bool()
requires requires { ranges::empty(T ()); };

constexpr explicit operator bool() const
requires requires { ranges::empty(T ()); };

Parametreler

Hiçbiri.

Dönüş değeri

false döndürür.

Örnek (bool)

// requires /std:c++20 or later
#include <ranges>
#include <iostream>

int main()
{
    auto anEmptyView = std::views::empty<int>;

    if (anEmptyView) // check if anEmptyView isn't empty
    {
        std::cout << "Error: why does an empty_view have elements?\n";
    }
    else
    {
        std::cout << "Correct: an empty_view is not not empty\n";
    }
}
Correct: an empty_view is not not empty

size

Görünümde her zaman 0 olacak öğe sayısını alın.

static constexpr size_t size()

Parametreler

Hiçbiri.

Dönüş değeri

0.

Ayrıca bkz.

<ranges>
empty aralık bağdaştırıcısı
single_view
sınıfları görüntüleme