2016-03-25 24 views
-2

C++ uygulamasında yeniyim ve anahtar olarak dizeleri kullanarak bir haritadan tamsayıları depolamaya ve okuyamaya çalışıyorum. Bu soru muhtemelen yinelenen ama ben birçok yol denedim ve bunların hiçbiri çalıştı:C++ Anahtar olarak dize içeren liste

/:) yardım için teşekkür ederiz

Özgül soru: anahtar olarak dizeyi kullanırken nasıl depolamak ve bir haritadan nesneleri alırım ve yinelenen girişlerden kaçınmak? ++ c

#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

Oku beyan .. u istediğiniz şeyleri yapmaya bir refernce olarak // aşağıdaki kodu kullanın. –

+1

Soru nedir? –

+0

Hata nedir? –

cevap

1

Hoşgeldiniz, `map :: operatörü []` yaklaşık Harita

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

Referansınız için teşekkür ederiz. Kullanmaya çalıştım ama sanırım yanlış bir şey yaptım: http://pastebin.com/AQTKfKgp – Friwi

İlgili konular