filter_view
classe (libreria standard C++)
Visualizzazione che filtra gli elementi di un intervallo che non corrispondono al predicato.
Sintassi
template<ranges::input_range V, indirect_unary_predicate<iterator_t<V>> Pred>
requires view<V> && is_object_v<Pred>
class filter_view : public view_interface<filter_view<V, Pred>>;
Parametri del modello
V
Tipo dell'intervallo sottostante.
Pred
Tipo del predicato che determina quali elementi conservare.
Visualizzare le caratteristiche
Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe
Caratteristica | Descrizione |
---|---|
Adattatore di intervallo | views::filter |
Intervallo sottostante | Deve soddisfare input_range o superiore |
Tipo di elemento | Uguale all'intervallo sottostante |
Visualizzare la categoria iteratore | input_range , forward_range o bidirectional_range a seconda dell'intervallo sottostante |
Dimensioni | No |
Iterabile const |
No |
Intervallo comune | Solo se l'intervallo sottostante soddisfa common_range |
Intervallo preso in prestito | Solo se l'intervallo sottostante soddisfa borrowed_range |
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 eliminare. |
Ereditato da view_interface | Descrizione |
back C++20 |
Ottiene l'ultimo elemento. |
empty C++20 |
Verificare se la visualizzazione è vuota. |
front C++20 |
Ottenere il primo elemento. |
operator bool C++20 |
Verificare se la visualizzazione non è vuota. |
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 filter_view
1) constexpr filter_view(V base, P pred);
2) filter_view() requires default_initializable<V> && default_initializable<Pred> = default;
Parametri
base
Visualizzazione sottostante.
pred
Predicato che determina gli elementi da mantenere dalla visualizzazione sottostante.
Per informazioni sui tipi di parametri del modello, vedere Parametri del modello.
Valore restituito
Istanza di filter_view
.
Osservazioni:
Il modo migliore per creare un filter_view
oggetto consiste nell'usare l'adattatore views::filter
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) Creare un valore inizializzato filter_view
. Il predicato e la vista sottostante devono essere inizializzabili per impostazione predefinita.
2) Sposta costruisce l'oggetto filter_view
da una base
vista e un pred
predicato. Entrambi base
e pred
vengono spostati tramite std::move()
.
Esempio: filter_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
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::filter(v, [](int i) {return i > 0; });
print(myView); // outputs 1 3 6
auto myView2 = v | std::views::filter([](int i) {return i < 3; });
print(myView2); // outputs 0 1 -2 -4 -5
}
1 3 6
0 1 -2 -4 -5
base
Ottiene l'intervallo sottostante.
// Uses a copy constructor to return the underlying range
constexpr V base() const& requires std::copy_constructible<V>;
// Uses std::move() to return the underlying range
constexpr V base() &&;
Parametri
Nessuna.
Valori restituiti
Visualizzazione sottostante.
begin
Ottiene un iteratore al primo elemento nella visualizzazione.
constexpr auto begin();
Valore restituito
Iteratore che punta al primo elemento della visualizzazione. Il comportamento non è definito se la vista non ha un predicato.
end
Ottenere l'sentinel alla fine della visualizzazione.
constexpr auto end()
Valore restituito
Sentinel che segue l'ultimo elemento nella visualizzazione:
pred
Ottenere un riferimento al predicato che determina quali elementi iniziali eliminare.
constexpr const Pred& pred() const;
Valore restituito
Riferimento al predicato.
Osservazioni:
Se la classe non archivia un predicato, il comportamento non è definito.
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::filter(
[](int i) {return i < 5; }); // keep the 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)
}
Vedi anche
<ranges>
filter
adattatore di intervallo
drop_while()
take_while()
classi di visualizzazione