Compartir vía


join_view (Clase, Biblioteca estándar de C++)

Combina los elementos de un intervalo de intervalos en una sola vista.

Sintaxis

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>>;

Parámetros de plantilla

R
Tipo del intervalo subyacente. Debe satisfacer input_range o superior.

Características de la vista

Para obtener una descripción de las siguientes entradas, vea View class characteristics (Ver características de clase).

Característica Descripción
Adaptador de rango views::join
Intervalo subyacente Debe satisfacer input_range o superior
Tipo de elemento Igual que el intervalo subyacente
Ver categoría de iterador input_range hasta bidirectional_range en función del intervalo subyacente que se itera
Tamaño No
Es const-iterable Solo si el intervalo subyacente es const iterable
Rango común Solo si el intervalo subyacente cumple common_range
Intervalo prestado No

Miembros

Funciones miembro Descripción
ConstructoresC++20 Construcción de un join_view.
baseC++20 Obtenga una referencia al intervalo subyacente.
beginC++20 Obtenga un iterador al primer elemento.
endC++20 Obtenga el sentinel al final de la vista.
Heredado de view_interface Descripción
backC++20 Obtenga el último elemento.
emptyC++20 Compruebe si la vista está vacía.
frontC++20 Obtiene el primer elemento.
operator boolC++20 Compruebe si la vista no está vacía.

Comentarios

La mejor manera de crear un join_view es usar el adaptador de views::join rango. Los adaptadores de rango son la manera prevista de acceder a las clases de vista. Los tipos de vista se exponen en caso de que desee crear su propio tipo de vista personalizado.

Esta vista es útil cuando desea combinar varios intervalos en una sola vista.

Requisitos

Encabezado: <ranges> (desde C++20)

Espacio de nombres: std::ranges

Opción del compilador: /std:c++20 o posterior es necesaria.

Constructores

Cree una instancia de join_view.

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

Parámetros

base
Intervalo subyacente.

Para obtener información sobre el tipo de parámetro de plantilla, consulte Parámetros de plantilla.

Comentarios

1) El valor predeterminado crea un join_view.
2) Construye a join_view partir de base.

Ejemplo: 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

Obtenga la vista subyacente.

// 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() &&;

Parámetros

Ninguno.

Valor devuelto

  1. La vista devuelta es copia construida.
  2. La vista devuelta se mueve construida.

begin

Obtenga un iterador al primer elemento de la vista.

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

Parámetros

Ninguno.

Valor devuelto

Iterador que apunta al primer elemento de la vista:

Imagen de un vector con los elementos 10, 20 y 30. El primer elemento contiene 10 y se etiqueta begin(). El último elemento contiene 30 y se etiqueta como

end

Obtenga el sentinel al final de la vista.

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

Parámetros

Ninguno.

Valor devuelto

Sentinel que sigue al último elemento de la vista:

Imagen de un vector con los elementos 10, 20 y 30. El primer elemento contiene 10 y se etiqueta begin(). El último elemento contiene 30 y se etiqueta como

Consulte también

join adaptador de rango
<ranges>
ver clases