Condividi tramite


join_view classe (libreria standard C++)

Combina gli elementi di un intervallo di intervalli in una singola visualizzazione.

Sintassi

template<input_range R> requires view<R> && input_range<range_reference_t<R>> &&
    (is_reference_v<range_reference_t<R>> || view<range_value_t<R>>)
class join_view : public view_interface<join_view<R>>;

Parametri del modello

R
Tipo dell'intervallo sottostante. Deve soddisfare input_range o superiore.

Visualizzare le caratteristiche

Per una descrizione delle voci seguenti, vedere Visualizzare le caratteristiche della classe

Caratteristica Descrizione
Adattatore di intervallo views::join
Intervallo sottostante Deve soddisfare input_range o superiore
Tipo di elemento Uguale all'intervallo sottostante
Visualizzare la categoria iteratore input_range fino a in base all'intervallo bidirectional_range sottostante da eseguire l'iterazione
Dimensioni No
Iterabile const Solo se l'intervallo sottostante è const iterabile
Intervallo comune Solo se l'intervallo sottostante soddisfa common_range
Intervallo preso in prestito No

Membri

Funzioni membro Descrizione
Costruttori C++20 Costruire un oggetto join_view.
baseC++20 Ottenere un riferimento all'intervallo sottostante.
beginC++20 Ottenere un iteratore al primo elemento.
endC++20 Ottenere l'sentinel alla fine della visualizzazione.
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.

Osservazioni:

Il modo migliore per creare un join_view oggetto consiste nell'usare l'adattatore views::join di intervallo. Gli adattatori di intervallo sono il modo previsto per accedere alle classi di visualizzazione. I tipi di visualizzazione vengono esposti nel caso in cui si voglia creare un tipo di visualizzazione personalizzato.

Questa visualizzazione è utile quando si desidera combinare più intervalli in una singola visualizzazione.

Requisiti

Intestazione: <ranges> (da C++20)

Spazio dei nomi: std::ranges

Opzione del compilatore: /std:c++20 o versione successiva è obbligatoria.

Costruttori

Creare un'istanza di un join_view.

1) join_view() = default;
2) constexpr explicit join_view(R base)

Parametri

base
Intervallo sottostante.

Per informazioni sul tipo di parametro del modello, vedere Parametri del modello.

Osservazioni:

1) Il valore predefinito costruisce un oggetto join_view.
2) Costruisce l'oggetto join_view da base.

Esempio: join_view

// requires /std:c++20, or later
#include <iostream>
#include <vector>
#include <ranges>

int main()
{
    std::vector<int> rg1{1, 2, 3, 4};
    std::vector<int> rg2{5, 6, 7};
    std::vector<int> rg3{8, 9, 10, 11, 12, 13};
    std::vector<int> rangeOfRanges[] {rg1, rg2, rg3};

    auto jv = std::ranges::join_view(rangeOfRanges);

    for (auto& e : jv)
    {
        std::cout << e << " ";
    }
}
1 2 3 4 5 6 7 8 9 10 11 12 13

base

Ottenere la 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

  1. La vista restituita viene costruita.
  2. La visualizzazione restituita viene costruita.

begin

Ottiene un iteratore al primo elemento nella visualizzazione.

constexpr auto begin();
constexpr auto begin() const
    requires ranges::input_range<const V> && std::is_reference_v<ranges::range_reference_t<const V>>;

Parametri

Nessuna.

Valore restituito

Iteratore che punta al primo elemento nella visualizzazione:

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

end

Ottenere l'sentinel alla fine della visualizzazione.

constexpr sentinel_t<R> end();
constexpr auto end() const requires range<const R>

Parametri

Nessuna.

Valore restituito

Sentinel che segue l'ultimo elemento nella visualizzazione:

Immagine di un vettore con gli elementi 10, 20 e 30. Il primo elemento contiene 10 ed è etichettato begin(). L'ultimo elemento contiene 30 e viene etichettato come 'ultimo elemento'. Una casella immaginaria dopo l'ultimo elemento indica la sentinella ed è etichettata end().

Vedi anche

join adattatore di intervallo
<ranges>
classi di visualizzazione