Compartir vía


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

Vista que solo tiene un elemento. Esta vista es útil para fines de prueba para llamar al código que debe proporcionarse con una vista con al menos un elemento en él.

Sintaxis

template<std::copy_constructible T>
  requires std::is_object_v<T>
class single_view : public ranges::view_interface<single_view<T>>

Parámetros de plantilla

T
El tipo del elemento.

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::single
Intervalo subyacente None
Tipo de elemento Se especifica cuando se crea .single_view
Ver categoría de iterador contiguous_range
Tamaño Siempre devuelve 1
Es const-iterable
Rango común
Intervalo prestado No

Miembros

Funciones miembro Descripción
ConstructoresC++20 Construya un elemento single_view.
beginC++20 Obtiene un iterador al elemento .
dataC++20 Obtiene un puntero al elemento .
endC++20 Obtenga el sentinel al final de la vista.
sizeC++20 Obtiene el número de elementos. Siempre devuelve 1.
Heredado de view_interface Descripción
backC++20 Obtenga el elemento .
emptyC++20 Compruebe si la vista está vacía (siempre devuelve false).
frontC++20 Obtenga el elemento .
operator[]C++20 Obtenga el elemento en la posición especificada (solo la posición 0 es válida).
operator boolC++20 Compruebe si la vista no está vacía (siempre devuelve false).

Comentarios

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

El valor de single_view se puede modificar a menos que el valor de plantilla sea const. Por ejemplo: single_view<const float> sv{3.14} // this value can't be modified because it's const.

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 single_view.

1) single_view() = default;
2) constexpr explicit single_view(const T& t);
3) constexpr explicit single_view(T&& t);
4) template<class... Args>
        requires constructible_from<T, Args...>
    constexpr single_view(in_place_t, Args&&... args);

Parámetros

t
Valor del elemento.

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

Comentarios

La mejor manera de crear un single_view es usar el adaptador de views::single rango.

1) Cree un single_view con un único elemento del tipo especificado construido de forma predeterminada. Por ejemplo, single_view<float> sv{} crea un single_view objeto con un único elemento de tipo float que se construye de forma predeterminada en 0.0.
2) Cree un single_view objeto con un único elemento del tipo especificado que se inicializa copiando desde el argumento especificado. Por ejemplo, single_view<myObjectType> sv{myObject} crea un single_view objeto con un único elemento de tipo myObjectType que se inicializa con copia desde el argumento .
3) Cree un single_view objeto con un único elemento del tipo especificado que se inicializa desde el argumento .
4) Cree un single_view con un único elemento del tipo especificado inicializado con (std::forward<Args>(args)...).

Por ejemplo, single_view

/// requires /std:c++20 or higher
#include <ranges>
#include <iostream>
#include <string>
#include <tuple>

int main()
{
    std::ranges::single_view<int> sv{7};
    std::cout << sv.front() << " " << *sv.data() << "\n"; // 7 7

    std::ranges::single_view<std::tuple<int, std::string>> sv2{{6502, "8-bit"}};
    std::cout << std::get<0>(sv2[0]) << " " << std::get<1>(sv2[0]) << "\n"; // 6502 8-bit
}
7 7
6502 8-bit

begin

Obtenga un puntero al único elemento de la vista.

constexpr T* begin() noexcept;
constexpr const T* begin() const noexcept;

Parámetros

Ninguno.

Valor devuelto

Puntero al elemento único dentro de single_view.

data

Obtenga un puntero al único elemento de .single_view

constexpr T* data() noexcept;
constexpr const T* data() const noexcept;

Parámetros

Ninguno.

Valor devuelto

Puntero al elemento de .single_view

end

Obtiene un puntero al sentinel después del elemento .

constexpr T* end() noexcept;
constexpr const T* end() const noexcept;

Parámetros

Ninguno.

Valor devuelto

Puntero al centinela que sigue al elemento .

size

Obtiene el número de elementos de la vista. Siempre devuelve 1.

static constexpr size_t size() noexcept;

Parámetros

Ninguno.

Valor devuelto

1

Consulte también

<ranges>
single adaptador de rango
empty_view
Ver clases