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