Map almacena los elementos en orden ordenado de claves. Ahora, si queremos recorrerlo en orden inverso, usaremos reverse_iterator of map.
Sintaxis:
map::reverse_iterator iterator_name;
El iterador inverso del mapa se mueve hacia atrás en el incremento. Entonces, apuntaremos el iterador inverso al último elemento del mapa y luego seguiremos incrementándolo hasta que alcance el primer elemento. Para hacer esto, usaremos 2 funciones miembro de std::map, es decir
, 1. rbegin(): Devuelve el iterador inverso que apunta al último elemento del mapa.
2. rend() : Devuelve el iterador inverso que apunta al primer elemento del mapa.
Ahora, para atravesar en orden inverso, iteraremos sobre el rango b/w rbegin() & rend() usando reverse_iterator.
Iteración inversa en el mapa:
Ejemplo:
Input: (10, "geeks"), (20, "practice"), (5, " contribute") Output : (20, "practice"), (10, "geeks"), (5, " contribute")
// C++ program makes a map to iterate // elements in reverse order. #include <bits/stdc++.h> using namespace std; int main() { // Creating & Initializing a map of String & Ints map<int, string> mymap; // Inserting the elements one by one mymap.insert(make_pair(10, "geeks")); mymap.insert(make_pair(20, "practice")); mymap.insert(make_pair(5, "contribute")); // Create a map reverse iterator map<int, string>::reverse_iterator it; // rbegin() returns to the last value of map for (it = mymap.rbegin(); it != mymap.rend(); it++) { cout << "(" << it->first << ", " << it->second << ")" << endl; } return 0; }
(20, practice) (10, geeks) (5, contribute)
También podemos usar auto para evitar recordar sintaxis compleja.
// C++ program makes a map to iterate // elements in reverse order with simpler // syntax #include <bits/stdc++.h> using namespace std; int main() { // Creating & Initializing a map of String & Ints map<int, string> mymap; // Inserting the elements one by one mymap.insert(make_pair(10, "geeks")); mymap.insert(make_pair(20, "practice")); mymap.insert(make_pair(5, "contribute")); // rbegin() returns to the last value of map for (auto it = mymap.rbegin(); it != mymap.rend(); it++) { cout << "(" << it->first << ", " << it->second << ")" << endl; } return 0; }
(20, practice) (10, geeks) (5, contribute)
Iteración inversa en multimap :
Multimap es similar al mapa con la adición de que varios elementos pueden tener las mismas claves. En lugar de que cada elemento sea único, el par de valor clave y valor asignado tiene que ser único en este caso.
Ejemplo:
Input : (10, "geeks"), (20, "practice"), (5, "contribute"), (20, "van"), (20, "watch"), (5, "joker") Output: (20, "watch"), (20, "van"), (20, "practice"), (10, "geeks"), (5, "joker"), (5, "contribute")
// C++ program makes a multimap to store // elements in descending order. #include <bits/stdc++.h> using namespace std; int main() { // Creating & Initializing a multimap // of Ints & String multimap<int, std::string> mymap; // Inserting the elements one by one mymap.insert(make_pair(10, "geeks")); mymap.insert(make_pair(20, "practice")); mymap.insert(make_pair(5, "contribute")); // Duplicates allowed mymap.insert(make_pair(20, "van")); mymap.insert(make_pair(20, "watch")); mymap.insert(make_pair(5, "joker")); for (auto it = mymap.rbegin(); it != mymap.rend(); it++) { cout << "(" << it->first << ", " << it->second << ")" << endl; } return 0; }
(20, watch) (20, van) (20, practice) (10, geeks) (5, joker) (5, contribute)
Publicación traducida automáticamente
Artículo escrito por Vishal Chaudhary 2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA