Bagikan melalui


ref_view kelas (Pustaka Standar C++)

Tampilan yang mereferensikan elemen yang termasuk dalam rentang lain.

Sintaks

template<std::ranges::range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;

Parameter template

R
Rentang yang akan dirujuk.

Anggota

Fungsi anggota Keterangan
KonstruktorC++20 ref_viewBuat .
baseC++20 Dapatkan referensi ke rentang yang mendasar.
beginC++20 Dapatkan iterator ke elemen pertama.
dataC++20 Dapatkan penunjuk ke elemen pertama dalam rentang yang dirujuk.
emptyC++20 Uji apakah ini ref_view kosong.
endC++20 Dapatkan sentinel di akhir ini ref_view.
sizeC++20 Dapatkan jumlah elemen. Rentang yang mendasar harus memuaskan sized_range.
Diwariskan dari view_interface Keterangan
backC++20 Dapatkan elemen terakhir.
frontC++20 Dapatkan elemen pertama.
operator[]C++20 Dapatkan elemen pada posisi yang ditentukan.
operator boolC++20 Uji apakah ini ref_view tidak kosong.

Melihat karakteristik

Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas

Karakteristik Deskripsi
Adaptor rentang views::all atau views::common
Rentang yang mendasar Harus memuaskan input_range
Jenis elemen Sama seperti rentang yang mendasar
Lihat kategori iterator Sama seperti rentang yang mendasar
Ukuran Hanya jika rentang yang mendasar memenuhi sized_range
Apakah const-iterable Ya
Rentang umum Hanya jika rentang yang mendasar memenuhi common_range
Rentang yang dipinjam Ya

Persyaratan

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

kumpulan nama XML: std::ranges

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

Konstruktor

Membuat instans ref_view

// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);

Parameter

rg
Rentang yang akan dirujuk.

Untuk informasi tentang jenis parameter templat, lihat Parameter templat.

Nilai hasil

Instans ref_view.

Keterangan

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

berguna ref_view untuk mengonversi kontainer menjadi tampilan. Misalnya, Anda dapat menggunakan ref_view untuk mengonversi vector ke tampilan, yang membuatnya murah untuk meneruskan elemen vektor.

Contoh: ref_view

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

int main()
{
    std::vector<int> v = {1,2,3};
    auto refView = std::views::all(v);
    std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
    refView[0] = 10; // modifies v[0]
    std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10

base

Mendapatkan salinan rentang yang mendasar.

constexpr R& base() const;

Parameter

Tidak ada.

Nilai hasil

Rentang yang mendasar.

begin

Dapatkan iterator ke elemen pertama di ref_view.

constexpr iterator_t<R> begin() const;

Parameter

Tidak ada.

Nilai hasil

Iterator yang menunjuk pada elemen pertama dalam ini ref_view.

Gambar vektor dengan elemen 10, 20, dan 30. Elemen pertama berisi 10 dan diberi label begin(). Elemen terakhir berisi 30 dan diberi label 'elemen terakhir'. Kotak imajiner setelah elemen terakhir menunjukkan sentinel dan diberi label end().

data

Dapatkan penunjuk ke elemen pertama dalam ini ref_view. Elemen dalam rentang harus bersebelah.

constexpr auto data() const requires contiguous_range<R>;

Parameter

Tidak ada.

Nilai hasil

Penunjuk ke elemen pertama.

empty

Uji apakah ini ref_view kosong.

constexpr bool empty() const

Parameter

Tidak ada.

Nilai hasil

Mengembalikan true jika ref_view tidak berisi elemen. Sebaliknya, false.

end

Dapatkan sentinel di akhir ini ref_view.

constexpr sentinel_t<R> end() const

Nilai hasil

Sentinel yang mengikuti elemen terakhir dalam hal ini ref_view:

Gambar vektor dengan elemen 10, 20, dan 30. Elemen pertama berisi 10 dan diberi label begin(). Elemen terakhir berisi 30 dan diberi label 'elemen terakhir'. Kotak imajiner setelah elemen terakhir menunjukkan sentinel dan diberi label end().

size

Dapatkan jumlah elemen.

constexpr auto size() const requires sized_range<R>

Parameter

Tidak ada.

Nilai hasil

Jumlah elemen dalam ref_view.

Lihat juga

<ranges>
all adaptor rentang
lihat kelas