make_pair de std::map - comment faire une paire que si la clé n'est pas répertorié (et mettre à jour la clé sinon)?
Considérons le code suivant :
std::map <string,string> myMap;
myMap.insert(std::make_pair("first_key" , "no_value" ));
myMap.insert(std::make_pair("first_key" , "first_value" ));
myMap.insert(std::make_pair("second_key" , "second_value" ));
typedef map<string, string>::const_iterator MapIterator;
for (MapIterator iter = myMap.begin(); iter != myMap.end(); iter++)
{
cout << "Key: " << iter->first << endl << "Values:" << iter->second << endl;
}
La sortie est :
Key: first_key
Values:no_value
Key: second_key
Values:second_value
Sens est que la deuxième affectation :
myMap.insert(std::make_pair("first_key" , "first_value" ));
n'a pas lieu .
Comment puis-je faire une paire , que si la clé n'est pas déjà répertorié , et si est répertorié - le changement de sa valeur ?
Est-il un générique méthode de std::map ?
Pourquoi avez-vous besoin
make_pair
? Je veux dire, quel est le problème avec une approche plus traditionnelle de myMap["first_key"]="first_value"
?OriginalL'auteur JAN | 2012-12-25
Vous devez vous connecter pour publier un commentaire.
Ajouter une condition avant d'insérer
OriginalL'auteur Haocheng
Utilisation
operator []
, ou de l'utilisationfind
et le changement de la valeur si la clé finded.Insérez la paire dans la carte, si ce n'est pas de la clé et de la valeur de mise à jour, si la clé existe.
Ou ceci:
OriginalL'auteur ForEveR
Il est plus efficace d'éviter de recherche sur la carte une deuxième fois lorsque la valeur est présente:
OriginalL'auteur ddiepo