Namespaces
Variants

std::ranges:: views:: values, std::ranges:: values_view

From cppreference.net
Ranges library
Range adaptors
Défini dans l'en-tête <ranges>
template < class R >
using values_view = ranges:: elements_view < R, 1 > ;
(1) (depuis C++20)
namespace views {

inline constexpr auto values = ranges :: elements < 1 > ;

}
(2) (depuis C++20)

Prend une view de valeurs de type tuple-like (par exemple std::tuple ou std::pair ), et produit une vue dont le value-type correspond au second élément du value-type de la vue adaptée.

1) Un alias pour ranges:: elements_view < R, 1 > .
2) RangeAdaptorObject (et aussi RangeAdaptorClosureObject ). L'expression views :: values ( e ) est équivalente-expression à values_view < views:: all_t < decltype ( ( e ) ) >> { e } pour toute sous-expression appropriée e .

Table des matières

Notes

values_view peut être utile pour extraire les valeurs des conteneurs associatifs, par exemple

std::map<int, std::string> map{{1, "alpha"}, {2, "beta"}};
for (auto const& value : std::views::values(map))
    std::cout << value << ' ';
// affiche : alpha beta

Exemple

#include <iostream>
#include <map>
#include <ranges>
int main()
{
    const auto list = {std::pair{1, 11.1}, {2, 22.2}, {3, 33.3}};
    std::cout << "pair::second values in the list: ";
    for (double value : list | std::views::values)
        std::cout << value << ' ';
    std::map<char, int> map{{'A', 1}, {'B', 2}, {'C', 3}, {'D', 4}, {'E', 5}};
    auto odd = [](int x) { return 0 != (x & 1); };
    std::cout << "\nodd values in the map: ";
    for (int value : map | std::views::values | std::views::filter(odd))
        std::cout << value << ' ';
    std::cout << '\n';
}

Sortie :

pair::second values in the list: 11.1 22.2 33.3
odd values in the map: 1 3 5

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 3563 C++20 keys_view ne peut pas participer à CTAD en raison de son utilisation de views::all_t views::all_t supprimé

Voir aussi

prend une view constituée de valeurs de type paire et produit une view des premiers éléments de chaque paire
(modèle de classe) (objet adaptateur de gamme)
prend une view constituée de valeurs tuple-like et un nombre N, et produit une view du N ème élément de chaque tuple
(modèle de classe) (objet adaptateur de gamme)
tranche de valarray de type BLAS : index de départ, longueur, pas
(classe)