Compartir a través de


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

Vista que consta del segundo índice en cada valor similar a la tupla de una colección. Por ejemplo, dado un intervalo de std::tuple<string, int> valores, cree una vista que consta de todos los int elementos de cada tupla.

values_view es un alias para elements_view<R, 1> y es útil para crear una vista de los valores en contenedores asociativos como std::unordered_map.

Sintaxis

template<input_range R>
using values_view = ranges::elements_view<R, 1>;

Parámetros de plantilla

R
Tipo del intervalo subyacente. Este tipo debe satisfacer ranges::input_range.

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::values
Intervalo subyacente Debe satisfacer forward_range o superior
Tipo de elemento Igual que el tipo del segundo elemento de tupla
Ver categoría de iterador forward_range, bidirectional_rangeo random_access_range
Tamaño Solo si el intervalo subyacente cumple sized_range
Es const-iterable Solo si el intervalo subyacente cumple const-iterable
Rango común Solo si el intervalo subyacente cumple common_range
Intervalo prestado Solo si el intervalo subyacente cumple borrowed_range

Miembros

Funciones miembro Descripción
ConstructoresC++20 Construya un elemento values_view.
baseC++20 Obtenga el intervalo subyacente.
beginC++20 Obtenga un iterador al primer elemento.
endC++20 Obtenga el centinela al final de .values_view
sizeC++20 Obtiene el número de elementos.
Heredado de view_interface Descripción
backC++20 Obtenga el último elemento.
emptyC++20 Comprueba si el objeto values_view está vacío.
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 values_view no está vacío.

Requisitos

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

Espacio de nombres: std::ranges

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

Comentarios

Los tipos similares a la tupla que se pueden usar con values_view son std::tuple, std::pairy std::array.

Constructores

Construya una instancia de .values_view

1) constexpr values_view(R base);
2) values_view() requires default_initializable<V> = default;

Parámetros

base
Intervalo subyacente de tipos similares a la tupla.

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

Valor devuelto

Instancia de values_view.

Comentarios

La mejor manera de crear un values_view es usar el adaptador de values 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.

  1. Cree un values_view a partir de la vista especificada.
  2. El constructor predeterminado crea un objeto construido values_viewde forma predeterminada.

Ejemplo: values_view

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

int main()
{
    // ========== work with a std::map

    std::map<std::string, int> cpp_standards
    {
        {"C++98", 1988},
        {"C++03", 2003},
        {"C++11", 2011},
        {"C++14", 2014},
        {"C++17", 2017},
        {"C++20", 2020}
    };

    // Extract all of the values from the map
    for (int years : std::views::values(cpp_standards))
    {
        std::cout << years << ' '; // 2003 2011 2014 2017 1988 2020
    }
    std::cout << '\n';

    // ========== work with a std::pair

    std::vector<std::pair<std::string, int>> windows
    {
        {"Windows 1.0", 1985},
        {"Windows 2.0", 1987},
        {"Windows 3.0", 1990},
        {"Windows 3.1", 1992},
        {"Windows NT 3.1", 1993},
        {"Windows 95", 1995},
        {"Windows NT 4.0", 1996},
        {"Windows 95", 1995},
        {"Windows 98", 1998},
        {"Windows 1.0", 1985},
        {"Windows 2000", 2000}
    };

    // Another way to call the range adaptor using '|': create a keys_view from each pair
    for (int years : windows | std::views::values)
    {
        std::cout << years << ' '; // 1985 1987 1990 1992 ...
    }
}
2003 2011 2014 2017 1988 2020
1985 1987 1990 1992 1993 1995 1996 1995 1998 1985 2000

base

Obtiene una copia de la vista subyacente.

// Uses a copy constructor to return the underlying view
constexpr V base() const& requires std::copy_constructible<V>;

// Uses a move constructor to return the underlying view
constexpr V base() &&;

Parámetros

None

Valor devuelto

Vista subyacente.

begin

Obtenga un iterador al primer elemento de .values_view

// returns a non-const iterator
1) constexpr auto begin() requires (!Simple_view<V>);

// returns a const iterator
2) constexpr auto begin() const requires ranges::range<const V>;

Parámetros

Ninguno.

Valor devuelto

Iterador que apunta al primer elemento de values_view.

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

Obtención del centinela al final del values_view

1) constexpr auto end() requires (!Simple_view<V> && !ranges::common_range<V>);
2) constexpr auto end() requires (!Simple_view<V> && ranges::common_range<V>);
3) constexpr auto end() const requires ranges::range<const V>;
4) constexpr auto end() const requires ranges::common_range<const V>;

Parámetros

Ninguno.

Valor devuelto

Centinela que sigue al último elemento del values_view

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

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

Comentarios

El tamaño de la vista solo está disponible si el intervalo subyacente es , sized_rangeo en otras palabras, limitado.

Consulte también

elements_view
keys_view
<ranges>
Ver clases