map<string ,vector<string> > hashes;
hashes.insert(pair<string,vector<string> > (a,b)); //error coming
當我在C++中使用上述語句時,出現了什麼問題,其中a和b是字符串? 這種類型的插入(即包含更多容器的容器)如何發生關聯容器?在C++地圖中插入
許多許多thanx提前
map<string ,vector<string> > hashes;
hashes.insert(pair<string,vector<string> > (a,b)); //error coming
當我在C++中使用上述語句時,出現了什麼問題,其中a和b是字符串? 這種類型的插入(即包含更多容器的容器)如何發生關聯容器?在C++地圖中插入
許多許多thanx提前
你可能想
hashes[a].push_back(b)
,如果你希望B附加到該矢量這就是。如果你想要它取代它,請使用
hashes[a].assign(1, b)
您正在嘗試使用在需要串的載體的字符串。您需要將b
插入到矢量中,然後將(a,your_vector)插入到地圖中。
或者,使用multimap<string, string>
以更容易使用的方式獲得相同的基本效果。這將允許你的insert(pair<...>(a, b))
。
也可以考慮使用std::make_pair
,而不是直接實例化std::pair
。它會推斷參數的類型,所以你不需要明確地填寫它們。
只要按照上面的定義:
vector<string> v;
v.push_back("mystring");
hashes.insert(std::make_pair("key", v));
注到make_pair
第二個參數是怎樣一個vector<string>
。這永遠不會失敗。如果第二個參數是字符串,它將失敗。
你是對的。謝謝 – Luv