2016-03-25 1 views
-2

Je suis nouveau en C++ et essaie de stocker et de lire des entiers à partir d'une carte en utilisant des chaînes comme clé. Cette question est probablement en double mais j'ai essayé bien des égards et aucun d'entre eux a travaillé: vous/Liste C++ avec une chaîne comme clé

Merci d'aider à :)

question spécifique: Comment stocker et obtenir des objets à partir d'une carte tout en utilisant la chaîne comme la clé et éviter les doublons?

#include <map> 
std::map<std::string, int> relation_map; 
void setRelationState(std::string guid, int rel){ 
    if (relation_map.find(guid) != relation_map.end()){ 
     std::map<std::string, int>::iterator it = relation_map.find(guid); 
     it->second = rel; 
     return; 
    } 
    relation_map.insert(pair<std::string, int>(guid, rel)); 
} 
int getRelationState(std::string guid){ 
    if (relation_map.find(guid) != relation_map.end())return relation_map[guid]; 
    return 1; 
} 
+1

Lisez à propos de l'opérateur 'la carte :: []'. –

+1

Quelle est la question? –

+0

Quelle est l'erreur? –

Répondre

1

Bienvenue C++, S'il vous plaît utilisez le code ci-dessous comme refernce pour faire les choses que tu veux .. // Déclaration Carte

std::map <int, std::string> stdBindList; 
std::map <int, std::string>::iterator pos; 

//Add Elements 

stdBindList.insert (std::pair<int,std::string>(15,”a”)); // 1 
stdBindList.insert (std::pair<int,std::string>(22,”b”)); // 2 

stdBindList.insert (std::pair<int,std::string>(12,”c”)); // 3 
stdBindList.insert (std::pair<int,std::string>(15,”d”)); // 4 
stdBindList.insert (std::pair<int,std::string>(5,”e”)); // 5 
stdBindList.insert (std::pair<int,std::string>(5,”f”)); // 6 
stdBindList.insert (std::pair<int,std::string>(2,”g”)); // 7 

stdBindList.insert (std::pair<int,std::string>(5,”h”)); // 8 
stdBindList.insert (std::pair<int,std::string>(5,”i”)); // 9 

//iterate and print 

for (pos = stdBindList.begin();pos!=stdBindList.end();pos++) 
{ 

} 
+0

Nous vous remercions de votre référence. J'ai essayé de l'utiliser, mais je suppose que j'ai fait quelque chose de mal: http://pastebin.com/AQTKfKgp – Friwi