map<string, vector<string>> find - C++ - Programmation
Marsh Posté le 27-02-2013 à 17:24:51
j'ai trouvé cout << "mapValue: " << iterMapValue->first << endl;
Marsh Posté le 27-02-2013 à 17:45:38
attention à la portée de tes variables (ton iterateur devrait sans doute être déclaré à l'intérieur de ta boucle for) et à l'opérateur d'incrémentation que tu utilises (toujours préférer le préfixé au postfixé)
Au delà de ca, oui, déréférencer un itérateur sur une map retourne une référence vers une std::pair dont first contient la clé et second contient la donnée associée.
Marsh Posté le 27-02-2013 à 17:48:54
Bonjour !
Si vous récupérez un itérateur via un "find", vous devez d'abord tester qu'il est valide (différent de map.end()) avant d'en afficher la valeur (en l'occurrence, vous affichez la clé, un itérateur étant un pointeur sur une std::pair, la valeur est dans iter->second).
Bonne continuation !
Marsh Posté le 27-02-2013 à 17:58:49
Farian a écrit : un itérateur étant un pointeur sur une std::pair |
Ca ressemble à un pointeur, mais ce n'est pas un pointeur.
Marsh Posté le 27-02-2013 à 17:19:53
Salut
Comment utiliser find?
vector<string> listValue;
map<string, vector<string>> mapValue;
iterMapValue = mapValue.find("base1" );
for (iterMapValue = mapValue.begin(); iterMapValue != mapValue.end(); iterMapValue++) {
cout << iterMapValue->first << "iterMapValue->first" << endl;
}
resultat il me parcourt toute la map et moi je veux que "base1"?