Bagikan melalui


join_view kelas (Pustaka Standar C++)

Menggabungkan elemen rentang ke dalam satu tampilan.

Sintaks

template<input_range R> requires view<R> && input_range<range_reference_t<R>> &&
    (is_reference_v<range_reference_t<R>> || view<range_value_t<R>>)
class join_view : public view_interface<join_view<R>>;

Parameter template

R
Jenis rentang yang mendasar. Harus memuaskan input_range atau lebih tinggi.

Melihat karakteristik

Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas

Karakteristik Deskripsi
Adaptor rentang views::join
Rentang yang mendasar Harus memuaskan input_range atau lebih tinggi
Jenis elemen Sama seperti rentang yang mendasar
Lihat kategori iterator input_range hingga bidirectional_range tergantung pada rentang yang mendasar yang diulang
Ukuran No
Apakah const-iterable Hanya jika rentang yang mendasar dapat diulang const
Rentang umum Hanya jika rentang yang mendasar memenuhi common_range
Rentang yang dipinjam No

Anggota

Fungsi anggota Keterangan
KonstruktorC++20 Buat join_view.
baseC++20 Dapatkan referensi ke rentang yang mendasar.
beginC++20 Dapatkan iterator ke elemen pertama.
endC++20 Dapatkan sentinel di akhir tampilan.
Diwariskan dari view_interface Keterangan
backC++20 Dapatkan elemen terakhir.
emptyC++20 Uji apakah tampilan kosong.
frontC++20 Dapatkan elemen pertama.
operator boolC++20 Uji apakah tampilan tidak kosong.

Keterangan

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

Tampilan ini berguna saat Anda ingin menggabungkan beberapa rentang ke dalam satu tampilan.

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 join_view.

1) join_view() = default;
2) constexpr explicit join_view(R base)

Parameter

base
Rentang yang mendasar.

Untuk informasi tentang jenis parameter templat, lihat Parameter templat.

Keterangan

1) Default-membangun join_view.
2) Membangun join_view dari base.

Contoh: join_view

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

int main()
{
    std::vector<int> rg1{1, 2, 3, 4};
    std::vector<int> rg2{5, 6, 7};
    std::vector<int> rg3{8, 9, 10, 11, 12, 13};
    std::vector<int> rangeOfRanges[] {rg1, rg2, rg3};

    auto jv = std::ranges::join_view(rangeOfRanges);

    for (auto& e : jv)
    {
        std::cout << e << " ";
    }
}
1 2 3 4 5 6 7 8 9 10 11 12 13

base

Dapatkan tampilan yang mendasar.

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

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

Parameter

Tidak ada.

Nilai hasil

  1. Tampilan yang dikembalikan dibuat salinannya.
  2. Tampilan yang dikembalikan dibangun.

begin

Dapatkan iterator ke elemen pertama dalam tampilan.

constexpr auto begin();
constexpr auto begin() const
    requires ranges::input_range<const V> && std::is_reference_v<ranges::range_reference_t<const V>>;

Parameter

Tidak ada.

Nilai hasil

Iterator yang menunjuk pada elemen pertama dalam tampilan:

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().

end

Dapatkan sentinel di akhir tampilan.

constexpr sentinel_t<R> end();
constexpr auto end() const requires range<const R>

Parameter

Tidak ada.

Nilai hasil

Sentinel yang mengikuti elemen terakhir dalam tampilan:

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().

Lihat juga

join adaptor rentang
<ranges>
lihat kelas