keys_view
(Clase, Biblioteca estándar de C++)
Vista sobre el primer índice en cada valor similar a la tupla de una colección. Por ejemplo, dado un intervalo de std::tuple<string, int>
, cree una vista que consta de todos los string
elementos de cada tupla.
keys_view
es un alias para elements_view<R, 0>
y es útil para hacer que la vista de las claves de contenedores asociativos como std::map
o std::unordered_map
.
Sintaxis
template<input_range R>
using keys_view = ranges::elements_view<R, 0>;
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::keys |
Intervalo subyacente | Debe satisfacer input_range o superior |
Tipo de elemento | Igual que el tipo del primer elemento de tupla del intervalo subyacente |
Ver categoría de iterador | random_access_range si el intervalo subyacente es contiguo; de lo contrario, es el mismo que el intervalo subyacente. |
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
La siguiente lista de funciones miembro hace referencia a la keys_view
clase . Recuerde que se trata de un alias para una element_view
creación de instancias de plantilla de clase.
Funciones miembro | Descripción |
---|---|
ConstructoresC++20 | Construya un elemento keys_view . |
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. |
empty C++20 |
Comprueba si el objeto keys_view está vacío. |
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 keys_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 keys_view
son std::tuple
, std::pair
y std::array
.
Constructores
Construya una instancia de .keys_view
1) constexpr keys_view(V base);
2) keys_view() requires std::default_initializable<V> = default;
Parámetros
base
Intervalo subyacente.
Para obtener información sobre el tipo de parámetro de plantilla, consulte Parámetros de plantilla.
Valor devuelto
Instancia de keys_view
.
Comentarios
La mejor manera de crear un keys_view
es usar el adaptador de keys
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 a keys_view
partir de la vista especificada.
2) El constructor predeterminado crea un vacío keys_view
.
Ejemplo: keys_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <utility>
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 keys from the map
for (const std::string& standards : std::views::keys(cpp_standards))
{
std::cout << standards << ' '; // C++03 C++11 C++14 C++17 C++98 C++20
}
std::cout << '\n';
// ========== work with a range of 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 an keys_view from each pair
for (const std::string& version : windows | std::views::keys)
{
std::cout << version << ' '; // Windows 1.0 Windows 2.0 Windows 3.0 ...
}
}
C++03 C++11 C++14 C++17 C++98 c++20
Windows 1.0 Windows 2.0 Windows 3.0 Windows 3.1 Windows NT 3.1 Windows 95 Windows NT 4.0 Windows 95 Windows 98 Windows 1.0 Windows 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
Ninguno.
Valor devuelto
Vista subyacente.
begin
Obtenga un iterador al primer elemento de .keys_view
1) constexpr auto begin() requires (!Simple_view<V>);
2) constexpr auto begin() const requires (Simple_view<V>) // or put another way, requires ranges::range<const V>;
Parámetros
Ninguno.
Valor devuelto
Iterador que apunta al primer elemento de keys_view
.
end
Obtención del centinela al final del keys_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
Sentinel que sigue al último elemento de keys_view
:
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 keys_view
.
Comentarios
El tamaño de la vista solo está disponible si el intervalo subyacente es , sized_range
o en otras palabras, limitado.