Aracılığıyla paylaş


drop_while_view class (C++ Standart Kitaplığı)

Bir koşulla eşleşen önde gelen öğeler bırakıldıktan sonra kalan bir aralığın öğelerini içeren görünüm.

Sözdizimi

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>>;

Şablon parametreleri

V
Temel alınan görünümün türü.

P
Bırakacak öndeki öğeleri belirleyen koşulun türü.

Özellikleri görüntüleme

Aşağıdaki girdilerin açıklaması için bkz . Sınıf özelliklerini görüntüleme

Characteristic Açıklama
Aralık bağdaştırıcısı views::drop_while
Temel alınan aralık Veya üzerini karşılamalı forward_range ve temel aralığın yineleyicileri modellenmelidir sized_sentinel_for
Öğe türü Temel alınan aralıkla aynı
Yineleyici kategoriyi görüntüleme Temel alınan aralıkla aynı
Boyutlu Yalnızca temel alınan aralık karşılanırsa random_access_range
- constyinelenebilir Hayır
Ortak aralık Yalnızca temel alınan aralık karşılanırsa common_range
Ödünç alınan aralık Yalnızca temel alınan aralık karşılanırsa borrowed_range

Üyeler

Üye işlevleri Açıklama
Oluşturucular Görünümü oluşturma.
base Temel alınan görünümü alın.
begin İlk öğeye bir yineleyici alın.
end Görünümün sonunda sentinel'i alın.
pred Hangi öğelerin bırakıldığını belirleyen koşula bir başvuru alın.
view_interface devralındı Açıklama
backC++20 Son öğeyi alın.
dataC++20 İlk öğeye bir işaretçi alın.
emptyC++20 Görünümün boş olup olmadığını test edin.
frontC++20 İlk öğeyi alın.
operator[]C++20 Öğesini belirtilen konumda alın.
operator boolC++20 Görünümün boş olup olmadığını test edin.
size Görünümdeki öğe sayısını alın.

Gereksinimler

Üst bilgi: <ranges> (C++20'den beri)

Ad alanı: std::ranges

Derleyici Seçeneği: /std:c++20 veya üzeri gereklidir.

Oluşturucular

bir örneğini drop_while_viewoluşturun.

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

Parametreler

base
Temel alınan aralık.

pred
Bırakacak öndeki öğeleri belirleyen koşul.

Şablon parametre türleri hakkında bilgi için bkz . Şablon parametreleri.

Dönüş değeri

Bir drop_while_view örnek.

Açıklamalar

Oluşturmanın drop_while_view en iyi yolu, aralık bağdaştırıcısını views::drop_while kullanmaktır. Aralık bağdaştırıcıları, görünüm sınıfları oluşturmanın amaçlanan yoludur. Kendi özel görünüm türünüzü oluşturmak istemeniz durumunda görünüm türleri kullanıma sunulur.

1) Bir görünümden ve koşuldan base pred öğesini drop_while_view taşır. hem hem de base pred aracılığıyla std::move()taşınır.
2) Varsayılan olarak bir drop_while_viewoluşturur.

Örnek: 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

Temel alınan görünümü alın.

// 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() &&;

Parametreler

Hiçbiri.

Döndürülenler

Temel alınan görünüm.

begin

Görünümdeki ilk öğeye bir yineleyici alın.

constexpr auto begin();

Dönüş değeri

Görünümdeki ilk öğeye işaret eden bir yineleyici. Görünümün bir koşulu yoksa davranış tanımlanmamıştır.

10, 20 ve 30 öğelerini içeren bir vektör resmi. İlk öğe 10 içerir ve begin() olarak etiketlenir. Son öğe 30 içerir ve 'son öğe' olarak etiketlenmiştir. Son öğeden sonraki bir sanal kutu sentinel'i gösterir ve end() olarak etiketlenmiştir.

end

Görünümün sonunda sentinel'i alın.

constexpr auto end()

Dönüş değeri

Görünümdeki son öğeyi izleyen sentinel:

10, 20 ve 30 öğelerini içeren bir vektör resmi. İlk öğe 10 içerir ve begin() olarak etiketlenir. Son öğe 30 içerir ve 'son öğe' olarak etiketlenmiştir. Son öğeden sonraki bir sanal kutu sentinel'i gösterir ve end() olarak etiketlenmiştir.

pred

Hangi öncü öğelerin bırakıldığını belirleyen koşula bir başvuru alın.

constexpr const Pred& pred() const;

Dönüş değeri

Koşula bir başvuru.

Açıklamalar

Görünüm bir koşulu depolamıyorsa, davranış tanımlanmamıştır.

Örnek 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

Ayrıca bkz.

<ranges>
drop_while aralık bağdaştırıcısı
take_while aralık bağdaştırıcısı
take_while_view
sınıfları görüntüleme