take_view
classe (libreria standard C++)
Visualizzazione dei primi N elementi da un'altra visualizzazione.
Sintassi
template<view V>
class take_view : public view_interface<take_view<V>>;
Parametri del modello
V
Tipo dell'intervallo sottostante.
Visualizzare le caratteristiche
Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe
Caratteristica | Descrizione |
---|---|
Adattatore di intervallo | views::take |
Intervallo sottostante | Qualsiasi intervallo |
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 |
Intervallo comune | Solo se l'intervallo sottostante random_access_range soddisfa e sized_range |
Intervallo preso in prestito | Solo se l'intervallo sottostante è borrowed_range |
Membri
Funzioni membro | Descrizione |
---|---|
Costruttori | 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. |
size C++20 |
Ottiene il numero di elementi. L'intervallo sottostante deve soddisfare sized_range . |
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. |
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_view
1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);
Parametri
base
Visualizzazione sottostante.
count
Numero di elementi da accettare dalla parte anteriore della visualizzazione sottostante. Se count
è maggiore del numero di elementi nella visualizzazione sottostante, la vista conterrà tutti gli elementi nell'intervallo sottostante.
Per informazioni sul tipo di parametro del modello, vedere Parametri del modello.
Valore restituito
Oggetto take_view
, che è una visualizzazione dei primi N elementi di un'altra visualizzazione. Se si specificano più elementi da eliminare rispetto all'intervallo sottostante, viene restituito un oggetto empty_view
.
Osservazioni:
Il modo migliore per creare un take_view
oggetto consiste nell'usare l'adattatore views::take
di intervallo. Gli adattatori di intervallo sono il modo previsto per creare classi di visualizzazione. I tipi di visualizzazione vengono esposti solo nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.
1) Creare un oggetto take_view
senza elementi. La vista sottostante è costruita per impostazione predefinita. base()
restituisce una copia di V()
.
2) Creare un take_view
oggetto da un base
e un conteggio. base
viene spostato tramite std::move()
.
Se count
è minore del numero di elementi nell'intervallo sottostante, count
determina le dimensioni dell'oggetto take_view
.
Se count
è maggiore del numero di elementi nell'intervallo sottostante, include take_view
tutti gli elementi nell'intervallo sottostante.
Esempio: take_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 newView = std::views::take(v, 3);
for (auto& e : newView)
{
std::cout << e << ' '; // 0 1 2
}
std::cout << '\n';
// Use the '|' operator to create a take_view
for (auto i : v | std::views::take(3))
{
std::cout << i << ' '; // 0 1 2
}
}
0 1 2
0 1 2
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.
Valore restituito
Visualizzazione sottostante.
begin
Ottiene un iteratore al primo elemento nella visualizzazione.
constexpr auto begin() requires (!Simple_view<V>);
constexpr auto begin() const requires range<const V>;
Parametri
Nessuna.
Valore restituito
Iteratore che punta al primo elemento della visualizzazione.
Osservazioni:
Per 1, il Simple_view<V>
requisito indica che la vista V
e const V
deve avere 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>;
Parametri
Nessuna.
Valore restituito
Sentinel che segue l'ultimo elemento nella visualizzazione.
Osservazioni:
Per 1, il Simple_view<V>
requisito indica che la vista V
e const V
deve avere gli stessi tipi di iteratore e sentinel.
size
Ottiene il numero di elementi.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
Parametri
Nessuna.
Valore restituito
Numero di elementi in take_view
.
Se è take_view
stato costruito con un oggetto esplicito count
:
- se
count
è minore del numero di elementi nell'intervallo sottostante, viene restituito come dimensione della visualizzazione. - se
count
è maggiore del numero di elementi nell'intervallo sottostante, la dimensione della vista èranges::size(base)
.
Vedi anche
<ranges>
take
adattatore di intervallo
classi di visualizzazione