0

次のマップされた multimap があります。

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):
エラー C2664: 'std::multimap<_Kty,_Ty>::multimap(const std::less<_Kty> &) ':
パラメーター 1 を 'const std::pair<_Ty1,_Ty2>' から 'const std::less<_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::pair<_Ty1,_Ty2>::pair': 3 つのオーバーロードのいずれも、すべての引数の型を変換できませんでした

と :

エラー C2679: バイナリ '=' : 型 'std::pair<_Ty1,_Ty2>' の右側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)

4

1 に答える 1

0

おそらくこのように(未テスト)

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

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

[] を使用すると、空のマルチマップが作成されます (42 にまだ存在しないと仮定します)。

于 2013-04-26T12:52:44.537 に答える