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. |
base C++20 |
Obtenga el intervalo subyacente. |
begin C++20 |
Obtenga un iterador al primer elemento. |
end C++20 |
Obtenga el sentinel al final de la vista. |
size C++20 |
Obtiene el número de elementos. El intervalo subyacente debe satisfacer sized_range . |
Heredado de view_interface |
Descripción |
back C++20 |
Obtenga el último elemento. |
data C++20 |
Obtiene un puntero al primer elemento. |
empty C++20 |
Compruebe si la vista está vacía. |
front C++20 |
Obtiene el primer elemento. |
operator[] C++20 |
Obtiene el elemento que se encuentra en la posición especificada. |
operator bool C++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_view
que 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.
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.
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 esranges::size(base)
.