oui, les map sont très utiles :-)
Un petit truc qui m'a posé des soucis:
Si tu cherches une valeur pour une association qui n'existe pas, le map va créer une entrée. Par exemple si tu fais:
	
	int val=ma_map[String("cent")];
 Alors que tu n'as jamais fait de 
le map crée une nouvelle entrée avec une valeur par défaut ce qui risque de te retourner des valeurs erronées.
Il y a donc une fonction pour rechercher la pair directement dans le map:
	
	map<String,int>::iterator pointer=ma_map.find("cent");
 Cette fonction retourne un pointeur sur un pair<String,int> et, si aucune paire n'a été trouvée, alors ce pointeur vaut "ma_map.end()".
Tu peux donc t'assurer qu'une valeur existe dans la map avec le code suivant:
	
	| 12
 3
 4
 5
 6
 
 | map<String,int>::iterator pointer=ma_map.find("cent");
if (pointer==ma_map.end()) {
  // Erreur: "cent" n'a pas encore été enregistré
}
int val=pointer->second;   // Retourne le second terme de la pair, càd la valeur
int val2=ma_map["cent"];  // Même résultat mais moins performant puisqu'il faut à nouveau parcourir la map à la recherche de la clé | 
 Voilà, c'est le point un peu faible des map à mon avis: impossible de savoir facilement si une clé a déjà été enregistrée ou non.
PS: Il y a aussi un map<String,int>::const_iterator utile si tu travailles dans une fonction qui garanti que la map est const
						
					
Partager