Espacios de nombres
Variantes
Acciones

std::ranges::views::keys, std::ranges::keys_view

De cppreference.com
< cpp‎ | ranges
 
 
Biblioteca de rangos
Adaptadores de rangos
 
Definido en el archivo de encabezado <ranges>
template<class R>
using keys_view = ranges::elements_view<R, 0>;
(1) (desde C++20)
namespace views {

    inline constexpr auto keys = ranges::elements<0>;

}
(2) (desde C++20)

Toma una vista (view) de valores similares a tuplas (por ejemplo std::tuple o std::pair), y produce una vista con un tipo valor del primer elemento del tipo valor de la vista adaptada.

1) Un alias para ranges::elements_view<R, 0>.
2) Objeto adaptador de rango. La expresión views::keys(e) es equivalente en expresión a keys_view<views::all_t<decltype((e))>>{e} para cualquier subexpresión e adecuada.

Contenido

[editar] Equivalente en expresión

La expresión e es equivalente-en-expresión a la expresión f, si e y f tienen los mismos efectos, ambas potencialmente lanzan o ambas potencialmente no lanzan (es decir, noexcept (e) == noexcept(f)), y ambas son subexpresiones constantes o ambas no son subexpresiones constantes.

[editar] Notas

keys_view puede ser útil para extraer claves de los contenedores asociativos; por ejemplo, for (auto const& key : std::views::keys(map)) { /*...*/ }.

[editar] Ejemplo

Muestra valores para cada tipo de quark en la física de partículas.

#include <iomanip>
#include <iostream>
#include <ranges>
#include <utility>
#include <vector>
#include <string>
 
int main()
{
    const std::vector<std::pair<std::string, double>> masa_del_quark{ // MeV/c²
        {"up", 2.3},      {"down", 4.8},
        {"charm", 1275},  {"strange", 95},
        {"top", 173'210}, {"bottom", 4'180},
    };
 
    const std::vector<std::pair<std::string, double>> terminos{ // términos traducidos
        {"(arriba)", 2.3},      {"(abajo)", 4.8},
        {"(encanto)", 1275},  {"(extraño)", 95},
        {"(cima)", 173'210}, {"(fondo)", 4'180},
    };
 
 
    std::cout << "nombre del quark:  │ ";
    for (std::string const& nombre : std::views::keys(masa_del_quark))
        std::cout << std::setw(9) << nombre << " │ ";
 
    std::cout << "\n" "

Salida:

nombre del quark:  │        up │      down │     charm │   strange │       top │    bottom │ 
traducción:

[editar] Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 3563 C++20 keys_view es incapaz de participar en la deducción de argumentos
de plantillas de clase debido a su uso de views::all_t.
views::all_t se eliminó.

[editar] Véase también

Toma una vista (view) que consiste valores similares a pares y produce una vista de los segundos elementos de cada par.
(plantilla de clase) (objeto adaptador de rango) [editar]
Toma una vista (view) que consiste en valores similares a tuplas y a un número N y produce una vista del N-ésimo elemento de cada tupla.
(plantilla de clase) (objeto adaptador de rango) [editar]
BLAS-como una rebanada de valarray: índice de inicio, duración, ritmo
Original:
BLAS-like slice of a valarray: starting index, length, stride
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(clase) [editar]