Je rencontre des problèmes pour effectuer une itération inverse sur une carte dans gcc C++. Quand j'utilise un itérateur inversé, il semble que je ne puisse rien y assigner - le compilateur se plaint. Je travaille avec un code maladroit avec un itérateur avant, mais ce n'est pas très élégant. Des pensées?comment itérer en sens inverse sur une carte en C++
17
A
Répondre
36
Voici un exemple de itérer vers l'arrière par un 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 vous êtes pré-C++ 11, vous aurez juste besoin de préciser auto
, qui est:
std::map<std::string, std::string>::reverse_iterator
Notez que si vous utilisez boost, vous pouvez utiliser une boucle for-based avec un adaptateur inversé:
#include <boost/range/adaptor/reversed.hpp>
for (auto& iter : boost::adaptors::reverse(m)) {
std::cout << iter.first << ": " << iter.second << std::endl;
}
Questions connexes
- 1. Empilement une variable dans le sens inverse en PHP
- 2. lire le mp3 en sens inverse dans Silverlight
- 3. Comment itérer sur un hachage en Ruby?
- 4. Itérer par liste générique en C#
- 5. Est-il possible de mapper des URL mod_rewrite en sens inverse?
- 6. Comment itérer une collection de colonnes Excel en C++ en utilisant Automation?
- 7. Comment itérer sur une séquence boost :: fusion?
- 8. C# itérer sur les cas de commutation
- 9. projection en perspective inverse
- 10. Comment puis-je itérer une collection .Net IList dans l'ordre inverse?
- 11. Comment passer une carte 2D en tant que paramètre à une fonction en C++?
- 12. C++: itérer sur une liste d'un type générique
- 13. Comment jeter une liste complète sans itérer en Java
- 14. objectif c opérateur sens
- 15. Carte char * en C DLL en Java avec JNA
- 16. std :: carte iterator pas itérer dans MFC app
- 17. Suivi itérer sur un graphique en utilisant XML minidom
- 18. Qu'est-ce qu'une carte et comment l'utiliser en C++?
- 19. Calcul du pseudo-inverse d'une matrice en C++
- 20. C#: comment itérer le contenu d'un DataColumn?
- 21. Comment puis-je itérer sur une référence de tableau Perl?
- 22. Vous cherchez un exemple Shell inverse de base en C (++)
- 23. itérer sur des éléments dans le cadre en utilisant SHDocVw.InternetExplorer avec C#
- 24. Comment changer une adresse IP en C++?
- 25. Comment faire du géocodage (pas de géocodage inverse) sur iPhone?
- 26. Comment itérer sur Hashtable dans JSP
- 27. Comment créer une carte d'image en utilisant Java Swing?
- 28. Itérer sur les couleurs
- 29. Itérer sur une chaîne 2 (ou n) caractères à la fois en Python
- 30. Comment créer une méthode d'extension sur une classe en C#?
Ce que vous ne nous avez pas dit, c'est ce que vous voulez faire. – tpdi
On dirait que vous utilisez peut-être un itérateur inversé, mais que vous appelez toujours le début et la fin plutôt que le rbegin et le rendu. La solution de GMan pourrait être ce que vous cherchez. Mais poster du code nous aidera à vous aider. – Smashery
Merci - Je pensais avoir essayé le rbegin/déchiffer, mais j'ai dû m'emmêler d'une manière ou d'une autre. –