Tengo problemas para iterar en reversa sobre un mapa en gcc C++. Cuando uso un iterador inverso, parece que no puedo asignarle nada; el compilador se queja. Estoy trabajando con un código incómodo utilizando un iterador directo, pero no es muy elegante. ¿Alguna idea?cómo iterar en reversa sobre un mapa en C++
17
A
Respuesta
36
He aquí un ejemplo de la iteración hacia atrás a través de una std::map
:
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, std::string> m;
m["a"] = "1";
m["b"] = "2";
m["c"] = "3";
for (auto iter = m.rbegin(); iter != m.rend(); ++iter) {
std::cout << iter->first << ": " << iter->second << std::endl;
}
}
Si usted es pre-C++ 11, usted sólo tiene que explicar auto
, que es:
std::map<std::string, std::string>::reverse_iterator
Tenga en cuenta que si usa boost, puede usar un bucle for basado en rango con un adaptador inverso:
#include <boost/range/adaptor/reversed.hpp>
for (auto& iter : boost::adaptors::reverse(m)) {
std::cout << iter.first << ": " << iter.second << std::endl;
}
Cuestiones relacionadas
- 1. Cómo iterar sobre un mapa anidada en <c:forEach>
- 2. ¿Cómo iterar sobre caracteres Unicode en C++?
- 3. ¿Cómo iterar sobre una cadena en C?
- 4. ¿Cómo iterar sobre un hash en Ruby?
- 5. C memcpy en reversa
- 6. iterar sobre mapa clojure pares (circular)
- 7. Cómo iterar sobre un hash en mustache.js
- 8. Iteración sobre una pila (lista reversa), ¿hay un método isempty()?
- 9. JSF 1.2 - iterar sobre un mapa que contiene Colecciones
- 10. ¿Cómo iterar sobre un TreeMap?
- 11. iterar sobre una tupla
- 12. perl: iterar sobre un typeglob
- 13. iteración sobre un mapa en Freemarker
- 14. ¿Cómo atravesar Linked Hash Map en reversa?
- 15. ¿Cómo iterar sobre un vector constante?
- 16. iterar sobre un mapa y llamar a una función que borre otros elementos es el mapa
- 17. ¿Cómo iterar sobre PriorityQueue?
- 18. ¿Cómo puedo iterar sobre cin línea por línea en C++?
- 19. ¿Cómo iterar sobre una priority_queue?
- 20. iterar sobre objetos en CoffeeScript
- 21. ¿Cómo puedo iterar sobre un vector de cadenas de C++?
- 22. Iterar todas las teclas de un mapa
- 23. Cómo iterar sobre matrices asociativas en Bash
- 24. Cómo iterar sobre las caras en CGAL
- 25. Cómo iterar sobre el archivo en python
- 26. C# Iterar sobre Diccionario ordenado por valor
- 27. ¿Cuál es la nueva forma de iterar sobre un mapa Java en Scala 2.8.0?
- 28. iterar sobre la tupla
- 29. Python iterar sobre un diccionario
- 30. ¿Cómo puedo iterar sobre ManyToManyField?
Lo que no nos has dicho es lo que quieres hacer. – tpdi
Suena como si estuvieras usando un iterador inverso, pero igual llamas de inicio y fin en lugar de reiniciar y deshacer. La solución de GMan puede ser lo que estás buscando. Pero publicar un código nos ayudará a ayudarlo. – Smashery
Gracias - Pensé que había intentado el rbegin/rend, pero debo haberme enredado de alguna manera. –