【发布时间】:2016-06-02 14:58:20
【问题描述】:
假设我有一个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 有什么好处?
【问题讨论】:
标签: c++ containers c++14