假设我有一个 map<int, int>
:
std::map<int, int> map;
map.emplace(1, 2);
map.insert({3, 4});
这两次调用会有什么区别吗?
在第一次调用中,两个整数将被值复制到emplace
函数,然后再复制到std::pair<int, int>
构造函数中。在第二次调用中,这两个整数将被值复制到std::pair<int, int>
构造函数中,然后作为第一个对的成员再次被值复制到内部的std::pair<int, int>
中。
我理解使用emplace
的好处,例如在std::string
类型中,第二次调用会通过值复制,而第一次调用会移动所有字符串,但在所描述的情况下使用emplace
有什么好处吗?