Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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_rangeo 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. |
baseC++20 |
Ottenere l'intervallo sottostante. |
beginC++20 |
Ottenere un iteratore al primo elemento. |
endC++20 |
Ottenere l'sentinel alla fine della visualizzazione. |
predC++20 |
Ottenere un riferimento al predicato che determina gli elementi da eliminare. |
| Ereditato da view_interface | Descrizione |
backC++20 |
Ottiene l'ultimo elemento. |
emptyC++20 |
Verificare se la visualizzazione è vuota. |
frontC++20 |
Ottenere il primo elemento. |
operator boolC++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