J'ai un map
d'un vector
de char
et un vector
de strings
. De temps en temps, si j'ai déjà vu le vecteur des personnages, j'aimerais ajouter une chaîne à mon vecteur de chaînes. Voici mon code pour le faire.std :: map :: effacer la boucle infinie
map<vector<char>, vector<string>>::iterator myIter = mMyMap.find(vChars);
if(myIter != mMyMap.end()) {
vector<string> vStrings = myIter->second;
mMyMap.erase(myIter);
vStrings.push_back(some_other_string);
mMyMap.insert(pair<vector<char>, vector<string>>(vChars, vStrings));
return TRUE;
}
L'appel à mMyMap.erase()
semble rester coincé dans une boucle infinie cependant. Je suppose que c'est parce que vStrings
ne reçoit pas une copie profonde de myIter->second
.
Ai-je besoin de vStrings
comme initialiser:
vector<string> vStrings(myIter->second);
Ou quel est le correctif approprié?
La copie est bien, et oui c'est une copie profonde. La seconde forme d'initialisation a le même effet que la première. –
Génial, c'est super à savoir, André. Merci :) – mrduclaw