最近读《C++ 标准库》这本书,发现C++11
中大部分的容器对于添加元素除了传统的
insert
或者 pusb_back/push_front
之外都提供一个新的函数叫做 emplace
。
比如如果你想要向 std::vector
的末尾添加一个数据,你可以:
1 | std::vector<int> nums; |
你也可以使用:
1 | std::vector<int> nums; |
那么这两种方式的区别到底是什么呢?在《C++标准库》一书中没有给出解释,我查了一 下相关的资料,在此做一个总结。