Bagikan melalui


empty_view kelas (Pustaka Standar C++)

Tampilan tanpa elemen. Tampilan ini berguna untuk tujuan pengujian seperti kode panggilan yang perlu disediakan dengan tampilan tetapi tidak perlu mengakses data yang mendasarnya.

Sintaks

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

Parameter template

T
Jenis elemen . Meskipun tidak ada elemen dalam empty_view, semua rentang homogen. Artinya, mereka memiliki elemen dari jenis tertentu. Jadi meskipun empty_view tidak memiliki elemen, ia masih memiliki jenis, seperti empty_view dari int, atau strings, dll.

Melihat karakteristik

Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas

Karakteristik Deskripsi
Adaptor rentang views::empty
Rentang yang mendasar Tidak
Jenis elemen Seperti yang ditentukan saat empty_view dibuat
Lihat kategori iterator contiguous_range
Ukuran Ya. Selalu mengembalikan 0
Apakah const-iterable Ya
Rentang umum Ya
Rentang yang dipinjam Ya

Anggota

Fungsi anggota Keterangan
KonstruktorC++20 Buat empty_view.
beginC++20 Menampilkan nullptr.
endC++20 Menampilkan nullptr.
sizeC++20 Mengembalikan 0
Diwariskan dari view_interface Keterangan
backC++20 Menghasilkan perilaku yang tidak ditentukan.
dataC++20 Menampilkan nullptr.
emptyC++20 Menampilkan true.
frontC++20 Menghasilkan perilaku yang tidak ditentukan.
operator[]C++20 Menghasilkan perilaku yang tidak ditentukan.
operator boolC++20 Menampilkan false.

Keterangan

Cara terbaik untuk membuat adalah empty_view dengan menggunakan empty adaptor rentang. Adaptor rentang adalah cara yang dimaksudkan untuk membuat kelas tampilan. Jenis tampilan diekspos jika Anda ingin membuat jenis tampilan kustom Anda sendiri.

Karena tidak pernah ada elemen apa pun dalam pengoptimalan empty_viewpengkompilasi tertentu dimungkinkan. Misalnya, pengkompilasi akan menghilangkan for (auto e : std::views::empty<int>) {...} karena tahu bahwa tidak ada yang perlu diulang.

Penggunaan lain untuk empty_view memisahkan split_view dengan pemisah empty_view , yang menghasilkan berbagai rentang elemen tunggal.

Persyaratan

Header: <ranges> (sejak C++20)

kumpulan nama XML: std::ranges

Opsi Pengkompilasi: /std:c++20 atau yang lebih baru diperlukan.

Konstruktor

Buat instans dari empty_view.

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

Parameter

T
Jenis elemen yang mendasar, yang tidak ada.

Keterangan

Cara terbaik untuk membuat adalah empty_view dengan menggunakan empty adaptor rentang.

Contoh 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

Menghasilkan perilaku yang tidak ditentukan.

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>;

Parameter

Tidak ada.

Nilai hasil

Tidak ada.

Keterangan

Memanggil fungsi ini dalam build debug menimbulkan pernyataan bahwa fungsi telah dipanggil pada kosong view_interface.

begin

Mengembalikan nullptr karena tidak ada elemen pertama dalam tampilan.

static constexpr T* begin() noexcept

Nilai hasil

nullptr

data

nullptr Mengembalikan karena tidak ada elemen pertama dalam tampilan untuk mendapatkan penunjuk.

static constexpr T* data() noexcept

Nilai hasil

nullptr.

empty

Uji apakah tampilan turunan kosong.

static constexpr bool empty() noexcept

Parameter

Tidak ada.

Nilai hasil

Menampilkan true.

end

Mengembalikan nullptr karena tidak ada elemen apa pun dalam tampilan.

static constexpr T* end() noexcept

Nilai hasil

nullptr.

front

Menghasilkan perilaku yang tidak ditentukan.

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

Parameter

Tidak ada.

Nilai hasil

Tidak ada.

Keterangan

Memanggil fungsi ini dalam build debug menimbulkan pernyataan bahwa fungsi telah dipanggil pada kosong view_interface.

operator[]

Menghasilkan perilaku yang tidak ditentukan.

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;

Parameter

pos
Posisi, relatif terhadap iterator awal, dari elemen untuk kembali.

Nilai hasil

Tidak ada.

Keterangan

Memanggil fungsi ini dalam build debug menimbulkan pernyataan bahwa indeks berada di luar rentang untuk view_interface.

operator bool

Uji apakah tampilan turunan tidak kosong.

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

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

Parameter

Tidak ada.

Nilai hasil

Menampilkan false.

Contoh (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

Dapatkan jumlah elemen dalam tampilan, yang akan selalu 0.

static constexpr size_t size()

Parameter

Tidak ada.

Nilai hasil

0.

Lihat juga

<ranges>
empty adaptor rentang
single_view
lihat kelas