Bagikan melalui


drop_while_view kelas (Pustaka Standar C++)

Tampilan yang berisi elemen rentang yang tetap ada setelah elemen terkemuka yang cocok dengan predikat dihilangkan.

Sintaks

template<ranges::view V, class P>
    requires ranges::input_range<V> &&
             std::is_object_v<P> &&
             std::indirect_unary_predicate<const P, ranges::iterator_t<V>>
class drop_while_view : public ranges::view_interface<drop_while_view<V, P>>;

Parameter template

V
Jenis tampilan yang mendasar.

P
Jenis predikat yang menentukan elemen terkemuka untuk dihilangkan.

Melihat karakteristik

Untuk deskripsi entri berikut, lihat Menampilkan karakteristik kelas

Karakteristik Deskripsi
Adaptor rentang views::drop_while
Rentang yang mendasar Harus memuaskan forward_range atau lebih tinggi dan iterator rentang yang mendasar harus memodelkan sized_sentinel_for
Jenis elemen Sama seperti rentang yang mendasar
Lihat kategori iterator Sama seperti rentang yang mendasar
Ukuran Hanya jika rentang yang mendasar memenuhi random_access_range
Apakah const-iterable No
Rentang umum Hanya jika rentang yang mendasar memenuhi common_range
Rentang yang dipinjam Hanya jika rentang yang mendasar memenuhi borrowed_range

Anggota

Fungsi anggota Keterangan
Konstruktor Buat tampilan.
base Dapatkan tampilan yang mendasar.
begin Dapatkan iterator ke elemen pertama.
end Dapatkan sentinel di akhir tampilan.
pred Dapatkan referensi ke predikat yang menentukan elemen mana yang akan dihilangkan.
Diwarisi dari view_interface Keterangan
backC++20 Dapatkan elemen terakhir.
dataC++20 Dapatkan penunjuk ke elemen pertama.
emptyC++20 Uji apakah tampilan kosong.
frontC++20 Dapatkan elemen pertama.
operator[]C++20 Dapatkan elemen pada posisi yang ditentukan.
operator boolC++20 Uji apakah tampilan tidak kosong.
size Dapatkan jumlah elemen dalam 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 drop_while_view.

1) constexpr drop_while_view(V base, P pred);
2) drop_while_view() requires default_initializable<V> && default_initializable<P> = default;

Parameter

base
Rentang yang mendasar.

pred
Predikat yang menentukan elemen terkemuka untuk dihilangkan.

Untuk informasi tentang jenis parameter templat, lihat Parameter templat.

Nilai hasil

Instans drop_while_view.

Keterangan

Cara terbaik untuk membuat adalah drop_while_view dengan menggunakan views::drop_while 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) Memindahkan membangun drop_while_view dari base tampilan dan pred predikat. Keduanya base dan pred dipindahkan melalui std::move().
2) Default-membangun .drop_while_view

Contoh: drop_while_view

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

void print(auto v)
{
    for (auto& x : v)
    {
        std::cout << x << ' ';
    }
    std::cout << '\n';
}

int main()
{
    std::vector<int> v{ 0, 1, 2, 3, -4, 5, 6 };
    auto myView = std::views::drop_while(
        v,
        [](int i) {return i >= 0; });
    print(myView); // -4 5 6

    auto myView2 = v | std::views::drop_while(
        [](int i) {return i < 5; });
    print(myView2); // 5 6
}
-4 5 6
5 6

base

Dapatkan tampilan yang mendasar.

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

// Uses std::move() to return the underlying view
constexpr V base() &&;

Parameter

Tidak ada.

Mengembalikan

Tampilan yang mendasar.

begin

Dapatkan iterator ke elemen pertama dalam tampilan.

constexpr auto begin();

Nilai hasil

Iterator yang menunjuk pada elemen pertama dalam tampilan. Perilaku tidak terdefinisi jika tampilan tidak memiliki predikat.

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 auto end()

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

pred

Dapatkan referensi ke predikat yang menentukan elemen terkemuka mana yang akan dihilangkan.

constexpr const Pred& pred() const;

Nilai hasil

Referensi ke predikat.

Keterangan

Jika tampilan tidak menyimpan predikat, perilaku tersebut tidak ditentukan.

Contoh pred

// 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 mv = v | std::views::drop_while(
        [](int i) {return i < 5; }); // drop the leading elements < 5
    std::cout << std::boolalpha << mv.pred()(v[6]); // outputs "false" because v[6] = 6 and 6 is not less than 5 (the predicate)
}
false

Lihat juga

<ranges>
drop_while adaptor rentang
take_while adaptor rentang
take_while_view
lihat kelas