map<string, vector<string>> find

map<string, vector<string>> find - C++ - Programmation

Marsh Posté le 27-02-2013 à 17:19:53    

Salut
 
Comment utiliser find?

Citation :


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"?

Reply

Marsh Posté le 27-02-2013 à 17:19:53   

Reply

Marsh Posté le 27-02-2013 à 17:24:51    

j'ai trouvé cout << "mapValue:  " << iterMapValue->first << endl;

Reply

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.


---------------
last.fm
Reply

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 !

Reply

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.
 


---------------
last.fm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed