语法:
std::map<int, int> m;
m.insert(std::make_pair(1, 42));
似乎有点疯狂。
为什么没有替代insert(K k, V v)
方法可以提供更好的方法:
std::map<int, int> m;
m.insert(1, 42);
是的,我知道m[1] = 42
,但它有自己的问题(创建值对象的额外副本)。
答案 0 :(得分:5)
我无法告诉你为什么不允许这种结构。也许是为了让insert
与其他容器保持相似&#39; insert
方法。但是,从c ++ 11开始,map::emplace可以满足您的需要。
std::map<int, int> m;
m.emplace(1, 42);
答案 1 :(得分:-2)
Order.last_from_this_year
强制复制这两个参数;而m.insert(x, y);
允许调用获得m.insert(std::make_pair(1, 42));
,避免所有复制。这样,const& pair
可以包含不可复制的对象(或重型复制对象)