Compartir vía


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

Vista de los primeros N elementos de otra vista.

Sintaxis

template<view V>
class take_view : public view_interface<take_view<V>>;

Parámetros de plantilla

V
Tipo del intervalo subyacente.

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::take
Intervalo subyacente Cualquier intervalo
Tipo de elemento Igual que el intervalo subyacente
Ver categoría de iterador Igual que el intervalo subyacente
Tamaño No
Es const-iterable Solo si el intervalo subyacente es const iterable
Rango común Solo si el intervalo subyacente satisface random_access_range y sized_range
Intervalo prestado Solo si el intervalo subyacente es borrowed_range

Miembros

Funciones miembro Descripción
Constructores Construya la vista.
baseC++20 Obtenga el intervalo subyacente.
beginC++20 Obtenga un iterador al primer elemento.
endC++20 Obtenga el sentinel al final de la vista.
sizeC++20 Obtiene el número de elementos. El intervalo subyacente debe satisfacer sized_range.
Heredado de view_interface Descripción
backC++20 Obtenga el último elemento.
dataC++20 Obtiene un puntero al primer elemento.
emptyC++20 Compruebe si la vista está vacía.
frontC++20 Obtiene el primer elemento.
operator[]C++20 Obtiene el elemento que se encuentra en la posición especificada.
operator boolC++20 Compruebe si la vista no está vacía.

Requisitos

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

Espacio de nombres: std::ranges

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

Constructores

Construcción de una instancia de take_view

1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);

Parámetros

base
Vista subyacente.

count
Número de elementos que se van a tomar desde la parte frontal de la vista subyacente. Si count es mayor que el número de elementos de la vista subyacente, la vista contendrá todos los elementos del intervalo subyacente.

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

Valor devuelto

, take_viewque es una vista de los primeros elementos N de otra vista. Si especifica más elementos que quitar de los que existen en el intervalo subyacente, se devuelve .empty_view

Comentarios

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

1) Cree un objeto take_view que no tenga elementos. La vista subyacente se construye de forma predeterminada. base() devuelve una copia de V().
2) Crear a take_view partir de y base un recuento. base se mueve a través de std::move().

Si count es menor que el número de elementos del intervalo subyacente, count determina el tamaño de take_view.
Si count es mayor que el número de elementos del intervalo subyacente, incluye take_view todos los elementos del intervalo subyacente.

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

Obtiene una copia de 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

Vista subyacente.

begin

Obtenga un iterador al primer elemento de la vista.

constexpr auto begin() requires (!Simple_view<V>);
constexpr auto begin() const requires range<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

Comentarios

Para 1, el Simple_view<V> requisito significa que la vista V y const V debe tener los mismos tipos de iterador y centinela.

end

Obtenga el sentinel al final de la vista.

1) constexpr auto end() requires !(Simple_view<V>);
2) constexpr auto end() const requires range<const V>;

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

Comentarios

Para 1, el Simple_view<V> requisito significa que la vista V y const V debe tener los mismos tipos de iterador y centinela.

size

Obtiene el número de elementos.

constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;

Parámetros

Ninguno.

Valor devuelto

Número de elementos incluidos en take_view.
take_view Si se construyó con un elemento explícitocount:

  • si count es menor que el número de elementos del intervalo subyacente, se devuelve como el tamaño de la vista.
  • si count es mayor que el número de elementos del intervalo subyacente, el tamaño de la vista es ranges::size(base).

Consulte también

<ranges>
take adaptador de rango
ver clases