Aracılığıyla paylaş


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

Bir koşulla eşleşen bir aralığın önde gelen öğelerini içeren görünüm.

Sözdizimi

template<view V, class Pred> requires
  input_range<V> && is_object_v<Pred> &&
  indirect_unary_predicate<const Pred, iterator_t<V>>
class take_while_view : public view_interface<take_while_view<V, Pred>>;

Şablon parametreleri

Pred
Görünüme koyulacak öndeki öğeleri belirleyen koşul türü.

V
Temel alınan görünümün 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::take_while
Temel alınan aralık Veya üzerini karşılaması input_range gerekir
Öğe türü Temel alınan aralıkla aynı
Yineleyici kategoriyi görüntüleme Temel alınan aralıkla aynı
Boyutlu Hayır
- constyinelenebilir Yalnızca temel alınan aralık yinelenebilirse const ve koşul başvurularla const çalışabilirse.
Ortak aralık Hayır
Ödünç alınan aralık Hayır

Üyeler

Üye işlevleri Açıklama
OluşturucularC++20 Görünümü oluşturma.
baseC++20 Temel alınan aralığı alın.
beginC++20 İlk öğeye bir yineleyici alın.
endC++20 Görünümün sonunda sentinel'i alın.
predC++20 Hangi öğelerin alındığını belirleyen koşula bir başvuru alın.
Devralınan view_interface 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 oluşturma take_while_view

1) take_while_view() requires 
    default_initializable<V> &&
    default_initializable<Pred> = default;

2) constexpr take_while_view(V base, Pred pred);

Parametreler

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

pred
Görünüme koymak için önde gelen öğeleri belirleyen koşul.

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

Dönüş değeri

Bir take_while_view nesnesi.

Açıklamalar

Oluşturmanın take_while_view en iyi yolu, aralık bağdaştırıcısını views::take_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 take_while_view taşır. hem hem de base pred aracılığıyla std::move()taşınır.
2) Boş take_while_viewbir oluşturur. Temel alınan görünüm ve koşul varsayılan olarak oluşturulur.

Örnek: take_while_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 twv = std::views::take_while(v, [](int i) {return i >= 0; });
    
    for (auto& e : twv)
    {
        std::cout << e << ' '; // 0 1 2 3
    }
    std::cout << '\n';

    // Using the '|' operator to create a take_view
    for (auto i : v | std::views::take_while([](int i) {return i < 5; }))
    {
        std::cout << i << ' '; // 0 1 2 3 -4
    }
}
0 1 2 3
0 1 2 3 -4

base

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

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

Parametreler

Hiçbiri.

Döndürülenler

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

begin

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

1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires
        range<const V> && 
        indirect_unary_predicate<const Pred, iterator_t<const V>>

Parametreler

Hiçbiri.

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.

Açıklamalar

1 için Simple_view gereksinim, bir görünümün V aynı yineleyici ve const V sentinel türlerine sahip olduğu anlamına gelir.

end

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

1) constexpr auto end() requires (!Simple_view<V>);
2) constexpr auto end() const requires
        range<const V> &&
        indirect_unary_predicate<const Pred, iterator_t<const V>

Parametreler

Hiçbiri.

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.

Açıklamalar

1 için Simple_view gereksinim, bir görünümün V aynı yineleyici ve const V sentinel türlerine sahip olduğu anlamına gelir.

pred

Görünümde hangi öncü öğelerin gideceğini seçmek için kullanılan koşula bir başvuru alın.

constexpr const Pred& pred() const;

Dönüş değeri

Görünüme eklenecek öndeki öğeleri seçmek için kullanılan koşul başvurusu.

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

Ayrıca bkz.

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