Podemos atravesar map y unordered_map usando las siguientes formas diferentes.
Usando un rango basado en bucle
map
// CPP program to traverse a map using range // based for loop #include <bits/stdc++.h> using namespace std; int main() { int arr[] = { 1, 1, 2, 1, 1, 3, 4, 3 }; int n = sizeof(arr) / sizeof(arr[0]); map<int, int> m; for (int i = 0; i < n; i++) m[arr[i]]++; cout << "Element Frequency" << endl; for (auto i : m) cout << i.first << " " << i.second << endl; return 0; }
unordered_map
// CPP program to traverse a unordered_map using // range based for loop #include <bits/stdc++.h> using namespace std; int main() { int arr[] = { 1, 1, 2, 1, 1, 3, 4, 3 }; int n = sizeof(arr) / sizeof(arr[0]); unordered_map<int, int> m; for (int i = 0; i < n; i++) m[arr[i]]++; cout << "Element Frequency" << endl; for (auto i : m) cout << i.first << " " << i.second << endl; return 0; }
Element Frequency 1 4 2 1 3 2 4 1
Salida [NOTA: para unordered_map, las filas de salida pueden estar
en cualquier orden]
Atravesar usando begin() y end()
map
// CPP program to traverse a map using iterators #include <bits/stdc++.h> using namespace std; int main() { int arr[] = { 1, 1, 2, 1, 1, 3, 4, 3 }; int n = sizeof(arr) / sizeof(arr[0]); map<int, int> m; for (int i = 0; i < n; i++) m[arr[i]]++; cout << " Element Frequency" << endl; for (auto i = m.begin(); i != m.end(); i++) cout << i->first << " " << i->second << endl; return 0; }
unordered_map
// CPP program to traverse a unordered_map // using iterators #include <bits/stdc++.h> using namespace std; int main() { int arr[] = { 1, 1, 2, 1, 1, 3, 4, 3 }; int n = sizeof(arr) / sizeof(arr[0]); unordered_map<int, int> m; for (int i = 0; i < n; i++) m[arr[i]]++; cout << " Element Frequency" << endl; for (auto i = m.begin(); i != m.end(); i++) cout << i->first << " " << i->second << endl; return 0; }
Element Frequency 1 4 2 1 3 2 4 1
Salida [NOTA: para unordered_map, las filas de salida pueden estar
en cualquier orden]
Iterando sobre un mapa usando STL Iterator:
Al crear un iterador de std::map e inicializarlo al inicio del mapa y visitar hasta el final del mapa, podemos iterar con éxito sobre todos los elementos del mapa.
Entonces, veamos el siguiente programa para saber cómo hacerlo.
C++
#include <iostream> #include <map> #include <string> #include <iterator> #include <algorithm> int main() { // Map created std::map<std::string, int> ExampleMap; // elements are inserted into map ExampleMap.insert(std::pair<std::string, int>("Sunday", 1)); ExampleMap.insert(std::pair<std::string, int>("Monday", 2)); ExampleMap.insert(std::pair<std::string, int>("Tuesday", 3)); ExampleMap.insert(std::pair<std::string, int>("Wednesday", 4)); ExampleMap.insert(std::pair<std::string, int>("Thursday", 5)); ExampleMap.insert(std::pair<std::string, int>("Friday", 6)); ExampleMap.insert(std::pair<std::string, int>("Saturday", 7)); // map iterator created // iterator pointing to start of map std::map<std::string, int>::iterator it = ExampleMap.begin(); // Iterating over the map using Iterator till map end. while (it != ExampleMap.end()) { // Accessing the key std::string word = it->first; // Accessing the value int count = it->second; std::cout << word << " :: " << count << std::endl; // iterator incremented to point next item it++; } return 0; }
Friday::6 Monday::2 Saturday::7 Sunday::1 Thursday::5 Tuesday::3 Wednesday::4
Iterando sobre un mapa usando std::for_each y la función lambda:
Al usar std::for y la función lambda, podemos iterar con éxito sobre todos los elementos del mapa.
Donde la función lambda se utilizará como función de devolución de llamada y recibirá cada entrada del mapa.
Entonces, veamos el siguiente programa para saber cómo hacerlo.
C++
#include <iostream> #include <map> #include <string> #include <iterator> #include <algorithm> int main() { // Map created std::map<std::string, int> ExampleMap; // elements are inserted into map ExampleMap.insert(std::pair<std::string, int>("Sunday", 1)); ExampleMap.insert(std::pair<std::string, int>("Monday", 2)); ExampleMap.insert(std::pair<std::string, int>("Tuesday", 3)); ExampleMap.insert(std::pair<std::string, int>("Wednesday", 4)); ExampleMap.insert(std::pair<std::string, int>("Thursday", 5)); ExampleMap.insert(std::pair<std::string, int>("Friday", 6)); ExampleMap.insert(std::pair<std::string, int>("Saturday", 7)); // map iterator created // iterator pointing to start of map std::map<std::string, int>::iterator it = ExampleMap.begin(); // Iterating over the map till map end. std::for_each(ExampleMap.begin(), ExampleMap.end(), [](std::pair<std::string, int> key_value) { // Accessing the key std::string word = key_value.first; // Accessing the value int count = key_value.second; std::cout<<word<<" :: "<<count<<std::endl; }); return 0; }
Friday::6 Monday::2 Saturday::7 Sunday::1 Thursday::5 Tuesday::3 Wednesday::4
Este artículo es una contribución de Kartik . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA