take_while_view
class (standardní knihovna jazyka C++)
Zobrazení obsahující úvodní prvky oblasti, které odpovídají predikátu.
Syntaxe
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>>;
Parametry šablony
Pred
Typ predikátu, který určuje úvodní prvky, které se mají vložit do zobrazení.
V
Typ podkladového zobrazení.
Zobrazení charakteristik
Popis následujících položek naleznete v tématu Zobrazení vlastností třídy.
Charakteristika | Popis |
---|---|
Adaptér rozsahu | views::take_while |
Podkladová oblast | Musí splňovat input_range nebo vyšší |
Typ elementu | Stejné jako podkladová oblast |
Zobrazit kategorii iterátoru | Stejné jako podkladová oblast |
Tříděný | No |
Je const -iterable |
Pouze pokud je const základní oblast iterovatelná a predikát může pracovat s const odkazy. |
Společný rozsah | No |
Zapůjčený rozsah | No |
Členové
Členské funkce | Popis |
---|---|
KonstruktoryC++20 | Vytvořte zobrazení. |
base C++20 |
Získejte podkladovou oblast. |
begin C++20 |
Získejte iterátor k prvnímu prvku. |
end C++20 |
Získejte sentinel na konci zobrazení. |
pred C++20 |
Získejte odkaz na predikát, který určuje, které prvky se mají vzít. |
Zděděno z view_interface |
Popis |
back C++20 |
Získejte poslední prvek. |
data C++20 |
Získejte ukazatel na první prvek. |
empty C++20 |
Otestujte, jestli je zobrazení prázdné. |
front C++20 |
Získejte první prvek. |
operator[] C++20 |
Získejte prvek na zadané pozici. |
operator bool C++20 |
Otestujte, jestli zobrazení není prázdné. |
size |
Získejte počet prvků v zobrazení. |
Požadavky
Hlavička: <ranges>
(od C++20)
Obor názvů: std::ranges
Je vyžadována možnost kompilátoru: /std:c++20
nebo novější.
Konstruktory
Vytvoření instance objektu take_while_view
1) take_while_view() requires
default_initializable<V> &&
default_initializable<Pred> = default;
2) constexpr take_while_view(V base, Pred pred);
Parametry
base
Podkladové zobrazení.
pred
Predikát, který určuje úvodní prvky, které se mají vložit do zobrazení.
Informace o typech parametrů šablony naleznete v tématu Parametry šablony.
Vrácená hodnota
Objekt take_while_view
.
Poznámky
Nejlepší způsob, jak vytvořit, take_while_view
je použití adaptéru rozsahu views::take_while
. Adaptéry rozsahu představují zamýšlený způsob vytváření tříd zobrazení. Typy zobrazení jsou vystaveny pro případ, že chcete vytvořit vlastní typ zobrazení.
1) Přesuňte konstrukce take_while_view
ze base
zobrazení a pred
predikátu. Obě base
a pred
jsou přesunuty přes std::move()
.
2) Vytvoří prázdnou take_while_view
. Základní zobrazení a predikát jsou standardně vytvořené.
Příklad: 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
Získá kopii podkladového zobrazení.
// 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() &&;
Parametry
Žádná
Návraty
Kopie podkladového zobrazení.
begin
Získejte iterátor k prvnímu prvku v zobrazení.
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>>
Parametry
Žádná
Vrácená hodnota
Iterátor ukazující na první prvek v zobrazení. Toto chování není definováno, pokud zobrazení nemá predikát.
Poznámky
Pro 1 požadavek znamená, Simple_view
že zobrazení V
a const V
mají stejné typy iterátoru a sentinelu.
end
Získejte sentinel na konci zobrazení.
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>
Parametry
Žádná
Vrácená hodnota
Sentinel, který následuje za posledním prvkem v zobrazení.
Poznámky
Pro 1 požadavek znamená, Simple_view
že zobrazení V
a const V
mají stejné typy iterátoru a sentinelu.
pred
Získejte odkaz na predikát použitý k výběru úvodních prvků v zobrazení.
constexpr const Pred& pred() const;
Vrácená hodnota
Odkaz na predikát použitý k výběru úvodních prvků, které se mají vložit do zobrazení.
Příklad: 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)
}
Viz také
<ranges>
take_view
take_while
adaptér rozsahu
zobrazit třídy