take_while_view
classe (libreria standard C++)
Visualizzazione che contiene gli elementi iniziali di un intervallo che corrispondono a un predicato.
Sintassi
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>>;
Parametri del modello
Pred
Tipo del predicato che determina gli elementi iniziali da inserire nella visualizzazione.
V
Tipo della vista sottostante.
Visualizzare le caratteristiche
Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe
Caratteristica | Descrizione |
---|---|
Adattatore di intervallo | views::take_while |
Intervallo sottostante | Deve soddisfare input_range o superiore |
Tipo di elemento | Uguale all'intervallo sottostante |
Visualizzare la categoria iteratore | Uguale all'intervallo sottostante |
Dimensioni | No |
Iterabile const |
Solo se l'intervallo sottostante è const iterabile e il predicato può funzionare con const i riferimenti. |
Intervallo comune | No |
Intervallo preso in prestito | No |
Membri
Funzioni membro | Descrizione |
---|---|
Costruttori C++20 | Costruisci la vista. |
base C++20 |
Ottenere l'intervallo sottostante. |
begin C++20 |
Ottenere un iteratore al primo elemento. |
end C++20 |
Ottenere l'sentinel alla fine della visualizzazione. |
pred C++20 |
Ottenere un riferimento al predicato che determina gli elementi da accettare. |
Ereditato da view_interface |
Descrizione |
back C++20 |
Ottiene l'ultimo elemento. |
data C++20 |
Ottenere un puntatore al primo elemento. |
empty C++20 |
Verificare se la visualizzazione è vuota. |
front C++20 |
Ottenere il primo elemento. |
operator[] C++20 |
Ottiene l'elemento nella posizione specificata. |
operator bool C++20 |
Verificare se la visualizzazione non è vuota. |
size |
Ottiene il numero di elementi nella visualizzazione. |
Requisiti
Intestazione: <ranges>
(da C++20)
Spazio dei nomi: std::ranges
Opzione del compilatore: /std:c++20
o versione successiva è obbligatoria.
Costruttori
Costruire un'istanza di un oggetto take_while_view
1) take_while_view() requires
default_initializable<V> &&
default_initializable<Pred> = default;
2) constexpr take_while_view(V base, Pred pred);
Parametri
base
Visualizzazione sottostante.
pred
Predicato che determina gli elementi iniziali da inserire nella visualizzazione.
Per informazioni sui tipi di parametri del modello, vedere Parametri del modello.
Valore restituito
Oggetto take_while_view
.
Osservazioni:
Il modo migliore per creare un take_while_view
oggetto consiste nell'usare l'adattatore views::take_while
di intervallo. Gli adattatori di intervallo sono il modo previsto per creare classi di visualizzazione. I tipi di visualizzazione vengono esposti nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.
1) Sposta costruisce l'oggetto take_while_view
da una base
vista e un pred
predicato. Entrambi base
e pred
vengono spostati tramite std::move()
.
2) Costruisce un oggetto vuoto take_while_view
. La visualizzazione sottostante e il predicato sono costruiti per impostazione predefinita.
Esempio: 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
Ottiene una copia della visualizzazione sottostante.
// 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() &&;
Parametri
Nessuna.
Valori restituiti
Copia della visualizzazione sottostante.
begin
Ottiene un iteratore al primo elemento nella visualizzazione.
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>>
Parametri
Nessuna.
Valore restituito
Iteratore che punta al primo elemento della visualizzazione. Il comportamento non è definito se la vista non ha un predicato.
Osservazioni:
Per 1, il Simple_view
requisito indica che una visualizzazione V
e const V
hanno gli stessi tipi di iteratore e sentinel.
end
Ottenere l'sentinel alla fine della visualizzazione.
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>
Parametri
Nessuna.
Valore restituito
Sentinel che segue l'ultimo elemento nella visualizzazione.
Osservazioni:
Per 1, il Simple_view
requisito indica che una visualizzazione V
e const V
hanno gli stessi tipi di iteratore e sentinel.
pred
Ottenere un riferimento al predicato usato per selezionare gli elementi iniziali che verranno inseriti nella visualizzazione.
constexpr const Pred& pred() const;
Valore restituito
Riferimento al predicato utilizzato per selezionare gli elementi iniziali da inserire nella vista.
Esempiopred
// 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)
}
Vedi anche
<ranges>
take_view
take_while
adattatore di intervallo
classi di visualizzazione