2012-06-28 80 views
0

發現這個Multimap containing pairs?,但它是沒有太大的幫助插入一對用C映射在多重映射值++

我怎麼會插入兩個字符串爲pair?下面,我的兩次失敗的嘗試。

multimap<string, pair<string,string> > mymm; 
mymm["Alex"] = std::pair<"000","000">; //errors 
mymm.insert(pair<string, pair<string, string> > 
      ("Alex", std::pair<"000","000">); // errors out as well 

我正在使用Visual Studio 2010,32位。謝謝 !

回答

5
mymm.insert(make_pair("Alex",make_pair("000","000"))); 

多重映射不允許使用的查找操作[],因爲有可能是不止一場比賽。

make_pair是一種創建對的簡便方法,無需明確指定類型。如果不使用make_pair,您需要這樣做:

mymm.insert(pair<string,pair<string,string> >("Alex",pair<string,string>("000","000"))); 
+0

謝謝! 'map'使用'[]'運算符來插入值。我在想'multimap'的行爲方式是一樣的。 – newprint

+1

這可能是值得解釋的,他從調用std :: pair <"000","000">;他將模板參數與構造函數參數混合在一起,這顯示出比不知道多圖的API更根本的問題...... – abarnert

+0

@abarnert:也許我添加的示例將有所幫助。 –

2

std::pair<string,string>("000","000")應該這樣做。

包含<和>之間的代碼表示的類型你inserting--的變量在這種情況下字符串

+0

'mymm [「Alex」]'是無意義的。 – ildjarn

+0

你們,我也遇到了這個代碼的錯誤。 – newprint