如果我有一个std::multimap<int, std::map<int, MyClass>> myMultimap
如何将一个类对象MyClassA
插入到地图中,其值为1
,且位图值为2
?
看起来我可以在c ++ 11中做myMultimap.at(2).insert(std::pair<1,MyClassA>);
但我使用的是c ++ 98,因为我无法控制库的回归/无法比拟。
我也试过
myMultimap[2].insert(
std::make_pair(
myMultimap[2].end(),
myClassA
)
);
为error: no match for ‘operator[]’ (operand types are ‘std::multimap<int, std::map<int, ns_namespace::MyClassType> >’ and ‘int’)|
... [
&#39>提供]
。
我不想做myMultimap.insert(std::make_pair(2,std::make_pair(1,MyClassA)))
之类的事情
因为如果我理解正确的话,这会在多图中创建一个新的地图,而不是将类对象分配给多图中的现有地图。
答案 0 :(得分:0)
这是一个两阶段的过程:
我不知道为什么外部地图使用多图(它们很少有用)所以exampke只使用第一个条目:
auto it = mymultimap.lower_bound(2);
if (it == mymultimap.end() || it->first != 2) {
it = mymultimap.insert(
std::make_pair(2, std::map<int, MyClass>())).first;
}
(*it)[1] = MyClassA;
(在移动设备上输入:可能存在拼写错误,但总体方法应该有效)。