Bagikan melalui


reverse_view kelas (Pustaka Standar C++)

Tampilan elemen rentang dalam urutan terbalik.

Sintaks

template<ranges::view V>
requires ranges::bidirectional_range<V>
class reverse_view : public ranges::view_interface<reverse_view<V>>;

Parameter template

V
Jenis tampilan yang mendasar.
Jenis ini harus memuaskan ranges::bidirectional_range.

Melihat karakteristik

Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas

Karakteristik Deskripsi
Adaptor rentang views::reverse
Rentang yang mendasar Harus memuaskan bidirectional_range hingga random_access_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 Hanya jika rentang yang mendasar adalah common_view dan memenuhi const-iterable
Rentang umum Ya
Rentang yang dipinjam Hanya jika rentang yang mendasar memenuhi borrowed_range

Anggota

Fungsi anggota Keterangan
KonstruktorC++20 reverse_viewBuat .
baseC++20 Dapatkan rentang yang mendasar.
beginC++20 Dapatkan iterator ke elemen pertama.
endC++20 Dapatkan sentinel di akhir reverse_view.
sizeC++20 Dapatkan jumlah elemen.
Diwariskan dari view_interface Keterangan
backC++20 Dapatkan elemen terakhir.
emptyC++20 Uji apakah reverse_view kosong.
frontC++20 Dapatkan elemen pertama.
operator[]C++20 Dapatkan elemen pada posisi yang ditentukan.
operator boolC++20 Uji apakah reverse_view tidak kosong.

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 reverse_view tampilan dua arah.

1) reverse_view() requires default_initializable<V> = default; // default-constructs the underlying view
2) constexpr explicit reverse_view(V rg); // initializes the underlying view via std::move(r)

Parameter

rg
Tampilan untuk memberikan tampilan terbalik.

Untuk informasi tentang jenis parameter templat, lihat Parameter templat.

Nilai hasil

Tampilan rentang yang mendasar, dalam urutan terbalik.

Keterangan

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

1) Konstruktor default menginisialisasi default reverse_view.
2) Buat reverse_view dari tampilan yang ditentukan.

Contoh: reverse_view

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

int main()
{
    std::vector<int> v{0, 1, 2, 3, -4, 5, 6};
    auto rv = v | std::views::reverse;
    
    for (auto e : rv) // 6 5 -4 3 2 1 0
    {
        std::cout << e << ' ';
    }
}
6 5 -4 3 2 1 0

base

Mendapatkan salinan tampilan yang mendasar.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

Parameter

Tidak ada.

Nilai hasil

Tampilan yang mendasar.

begin

Dapatkan iterator ke elemen pertama di reverse_view.

1) constexpr reverse_iterator<iterator_t<V>> begin();
2) constexpr reverse_iterator<iterator_t<V>> begin() requires common_range<V>;
3) constexpr auto begin() const requires common_range<const V>;

Parameter

Tidak ada.

Nilai hasil

Iterator yang menunjuk pada elemen pertama di reverse_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().

Keterangan

Setelah panggilan pertama ke begin(), panggilan berikutnya berjalan dalam waktu konstan, O(1), tidak peduli berapa banyak elemen dalam reverse_view. Ini memiliki implikasi karena reverse_view menyimpan nilai last sehingga dapat mengembalikannya berulang kali dari begin. Ini berarti Anda tidak boleh menggunakan kembali tampilan setelah kontainer yang mendasar dimodifikasi. Jika rentang yang mendasar dimodifikasi, buat tampilan baru, yang murah.

2) Tampilan yang mendasar harus memuaskan common_range, yang berarti bahwa tampilan yang mendasar harus memiliki jenis perulangan awal dan akhir yang sama.
3) Tampilan yang mendasar harus memenuhi common_range tampilan const untuk melakukan iterasi melalui const reverse_view.

end

Dapatkan sentinel di akhir reverse_view

1) constexpr reverse_iterator<iterator_t<V>> end();
2) constexpr auto end() const requires common_range<const V>;

Parameter

Tidak ada.

Nilai hasil

Sentinel yang mengikuti elemen terakhir dalam reverse_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().

Keterangan

Untuk 2, tampilan yang mendasar harus dipenuhi common_range untuk tampilan const, yang berarti bahwa tampilan yang mendasar harus memiliki jenis perulangan awal dan akhir yang sama.

size

Dapatkan jumlah elemen.

constexpr auto size() requires ranges::sized_range<V>;
constexpr auto size() const requires ranges::sized_range<const V>;

Parameter

Tidak ada.

Nilai hasil

Jumlah elemen dalam reverse_view.

Keterangan

Ukuran tampilan hanya tersedia jika rentang yang mendasar adalah sized_range, atau dengan kata lain, terikat.

Lihat juga

<ranges>
reverse adaptor rentang
Melihat kelas