2009-12-22 25 views
0

這裏是我,我是新來的C++,所以我不知道這是正確的...如何查找的hash_map在C++?

typedef pair<string, int>:: make_pair; 
hash_map <string, int> dict; 
dict.insert(make_pair("apple", 5)); 

我想給我的hash_map「蘋果」,我想找回5.如何我要做嗎?

回答

9

hash_map是不是標準的C++,所以你應該檢查你使用任何庫(或至少告訴我們,它的名字)的文檔,但最有可能這將工作:

hash_map<string, int>::iterator i = dict.find("apple"); 

if (i == dict.end()) { /* Not found */ } 
else { /* i->first will contain "apple", i->second will contain 5 */ } 

另外,如果你肯定知道"apple"dict,你也可以這樣做:dict["apple"]。例如cout << dict["apple"];會打印出5

另外,爲什麼在你的代碼中的typedef?你就不能使用std::make_pair?而且,它不會編譯的方式,你寫的(有兩個領先的冒號)

+1

+1如果你知道* *是'字典'包含蘋果,你也可以使用'字典[「蘋果」]'。這可能效率稍低,但在某些情況下更明確。 – 2009-12-22 22:07:37

+0

加入到我的回覆中,謝謝 – 2009-12-22 22:09:46

+0

假設hash_map像map一樣工作,並且如果key尚不存在,它將會添加值爲0的值。無論如何它都會在SGI hash_map中執行。 – 2009-12-22 23:32:23

0

迭代你的HashMap,向量,列表和其他結構:

for(hash_map<string,int>::iterator i = dict.begin(); i != dict.end(); i++) 
{ 
    cout << "key(string): " << i->first << ", value(int): " << i->second << endl; 
}