2012-06-08 58 views
0
map<string ,vector<string> > hashes; 

hashes.insert(pair<string,vector<string> > (a,b)); //error coming 

當我在C++中使用上述語句時,出現了什麼問題,其中a和b是字符串? 這種類型的插入(即包含更多容器的容器)如何發生關聯容器?在C++地圖中插入

許多許多thanx提前

+0

你是對的。謝謝 – Luv

回答

3

你可能想

hashes[a].push_back(b) 

,如果你希望B附加到該矢量這就是。如果你想要它取代它,請使用

hashes[a].assign(1, b) 
2

您正在嘗試使用在需要串的載體的字符串。您需要將b插入到矢量中,然後將(a,your_vector)插入到地圖中。

或者,使用multimap<string, string>以更容易使用的方式獲得相同的基本效果。這將允許你的insert(pair<...>(a, b))

也可以考慮使用std::make_pair,而不是直接實例化std::pair。它會推斷參數的類型,所以你不需要明確地填寫它們。

2

只要按照上面的定義:

vector<string> v; 
v.push_back("mystring"); 

hashes.insert(std::make_pair("key", v)); 

注到make_pair第二個參數是怎樣一個vector<string>。這永遠不會失敗。如果第二個參數是字符串,它將失敗。