有人能告訴我的代碼來獲得對哈希映射在C++中開始了下面的情況:哈希表在C(整型,字符串[])++
我想有一個(鍵,值)的映射(整型,字符串[])。
所以,我的地圖應該有一個int鍵指向一個大小的字符串數組。我如何在C++中聲明和使用哈希映射。
請幫我這個。在此先感謝
有人能告訴我的代碼來獲得對哈希映射在C++中開始了下面的情況:哈希表在C(整型,字符串[])++
我想有一個(鍵,值)的映射(整型,字符串[])。
所以,我的地圖應該有一個int鍵指向一個大小的字符串數組。我如何在C++中聲明和使用哈希映射。
請幫我這個。在此先感謝
您可以使用std::vector
S的std::string
個
std::map
std::unordered_map
,但unordered_multimap
呈現在C++是更好的選擇。它允許您爲同一個鍵存儲多個項目,而無需在每個映射條目中管理向量。
下面是一個使用地圖的一個示例:
using namespace std;
int main(int argc, const char* argv[]) {
unordered_map<int,vector<string>> mvs;
vector<string> items1;
items1.push_back("hello");
items1.push_back("world");
vector<string> items2;
items2.push_back("quick");
items2.push_back("brown");
items2.push_back("fox");
mvs[1] = items1;
mvs[200] = items2;
mvs[4].push_back("another_one");
for(unordered_map<int,vector<string>>::const_iterator iter = mvs.begin() ; iter != mvs.end() ; iter++) {
cout << iter->first << ":";
for (vector<string>::const_iterator jter = iter->second.begin() ; jter != iter->second.end() ; jter++) {
cout << *jter << " ";
}
cout << endl;
}
return 0;
}
編輯,以提哈希映射。
這些都不是哈希映射 – juanchopanza 2012-04-19 19:44:57
@juanchopanza糟糕,我錯過了問題的「哈希映射」部分。我不是100%肯定它是必不可少的,你可以:像這樣的嵌套結構經常用在類庫缺少multimaps的語言中。 – dasblinkenlight 2012-04-19 19:47:06
還有一個'std :: unordered_multimap' – bames53 2012-04-19 19:55:32
'std :: unordered_map>' –
ildjarn
2012-04-19 19:42:04
或者'std :: tr1 :: array'代替'std :: vector'代替它的值。 – 2012-04-19 19:43:01