2013-04-26 23 views
0

我有以下映射多重映射:如何填充映射的多圖?

map<int, multimap<int, pair<string, string>>> modCreAlt; 

我試圖插入有一條線:

int priority = ... ; 
string alertInv = ... ; 
string upperAlertInv = ... ; 

modCreAlt.insert(make_pair(42, make_pair(priority, make_pair(alertInv, upperAlertInv)))); 

,但我得到以下編譯錯誤:

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ utility(49):
error C2664:'std :: multimap < _Kty,_Ty> :: multimap(const s TD ::少< _Kty> &)」:
不能從轉換參數1 '常量性病::對< _Ty1,_Ty2>' 到 '常量性病::少< _Ty> &'

- -
我也試圖插入行的方式:

modCreAlt.insert(pair<int, multimap<int, pair<string, string>>>(42, make_pair(priority, make_pair(alertInv, upperAlertInv)))); 

和:

modCreAlt[42] = make_pair(priority, make_pair(alertInv, upperAlertInv)); 

其分別導致日,2以下編譯錯誤:

錯誤C2665: '的std ::對< _Ty1,_Ty2> ::對':無3個重載可以轉換所有的參數類型

和:

錯誤C2679:二進制 '=':沒有操作員發現這需要類型的右邊的操作數 '的std ::對< _Ty1,_Ty2>'(或沒有可接受轉換)

+1

你從來沒有創建一個multimap。 – john 2013-04-26 12:49:43

+0

正如@john所說:最外層對的第二個元素必須是'multimap',而不是'pair'。 – Angew 2013-04-26 12:51:56

回答

0

像這也許(未經測試)

int priority = ... ; 
string alertInv = ... ; 
string upperAlertInv = ... ; 

modCreAlt[42].insert(make_pair(priority, make_pair(alertInv, upperAlertInv))); 

使用[]爲您創建一個空的多重映射(假設一個不存在的42)。