Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.