2010-10-17 13 views
0

Je rencontre un problème avec la carte stl. Au départ, je remplis la carte avec des données comme ça.C++ Configuration de la copie de la carte STL Valeur booléenne à true

//loop 
pair< int, int > xy (x,y); 
currentMap.insert(make_pair(xy), value); //map< pair<int, int>, bool> 
prevMap.insert(make_pair(xy), value); 
// End Loop 

Ensuite, je supprime un élément selon certaines règles.

currentMap.erase(make_pair(xy)); 

Plus tard, je fais un échange des deux objets de la carte.

prevMap = currentMap; 

Après l'échange, tous les éléments sont affectés à true. Si je recherche l'élément xy ... * edit - j'ai une longueur d'avance sur moi-même. Pardon.

i = currentMap.find(make_pair(xy)); 
return i->second; // Always true after swap. 

vérité sera toujours d'évaluer à vrai. L'initialisation d'une map va-t-elle définir la valeur bool à true? Puis-je initialiser avec tous les booléens à faux.

Merci.

Répondre

1

Vous ne pouvez pas initialiser les valeurs de la carte à quoi que ce soit. Vous pouvez uniquement insérer des valeurs avec la clé. Votre dernier extrait de code doit ressembler à ceci si vous voulez renvoyer false lorsque la clé est manquante:

i = currentMap.find(make_pair(xy)); 
if (i != currentMap.end()) 
    return i->second; 
return false; 
+0

Woops. J'ai fait une erreur dans mon message. Merci d'avoir attrapé chrisaycock: S – sdk900

+0

Je viens d'essayer cela en fonction de votre message avant l'édition. Merci pour le conseil, mais hélas j'ai encore des problèmes après le swap. Je crois qu'il peut être ailleurs où dans mon code ... – sdk900

+0

En fait chrisaycock cela a résolu mon problème. Savez-vous pourquoi j'ai été rejeté? Je me rends compte que ma question avait à l'origine des erreurs ... De toute façon Merci beaucoup. Je vais me coucher. – sdk900