Ce face std::views::keys
std::views::keys ia primul element din fiecare pereche sau tuplu, iar std::views::values pe al doilea. Cel mai des se folosesc pe std::map și std::unordered_map.
Sunt scurtături pentru std::views::elements<0> și std::views::elements<1>. Prin values poți și modifica valorile din map.
Parametri
| Parametru | Descriere |
|---|---|
range_de_perechi |
Un range de std::pair sau std::tuple. |
Ce returnează
Un view cu cheile, respectiv cu valorile.
Exemple
Exemplul 1: Chei și valori dintr-un map
#include <map>
#include <print>
#include <ranges>
#include <string>
int main() {
std::map<std::string, int> stoc{{"mere", 40}, {"pere", 15}, {"prune", 0}};
std::println("Produse: {}", stoc | std::views::keys);
std::println("Cantități: {}", stoc | std::views::values);
}
Rezultat
Produse: ["mere", "pere", "prune"]
Cantități: [40, 15, 0]
Exemplul 2: Modificarea valorilor și suma lor
#include <algorithm>
#include <functional>
#include <map>
#include <print>
#include <ranges>
#include <string>
int main() {
std::map<std::string, double> preturi{{"cafea", 12.5}, {"ceai", 8.0}, {"suc", 9.5}};
for (double& p : preturi | std::views::values) {
p *= 1.1;
}
double total = std::ranges::fold_left(preturi | std::views::values, 0.0, std::plus<>());
std::println("Total: {:.2f} lei", total);
}
Rezultat
Total: 33.00 lei
Greșeli frecvente
- Încerci să modifici cheile prin
views::keyspe unstd::map: cheile suntconstși nu compilează.
Comenzi înrudite
std::views::transform: Creează o vedere în care fiecare element este rezultatul unei funcții aplicate elementului original.std::views::zip: Parcurge mai multe range-uri în paralel, oferind la fiecare pas un tuplu cu elementele de pe aceeași poziție.std::ranges::to: Transformă un range sau un view (filtrat, transformat) într-un container nou: vector, set, string, map.