一、emplace是什么?
emplace在英文里是放置的意思,我们知道,如果一个构造函数只有一个参数,在没有显式指明为explicit将会通过构造临时变量方法进行构造,emplace可以避免产生这样的临时变量.
二、函数原型
template <class... Args>
iterator emplace (const_iterator position, Args&&... args);
其中:
- position 插入位置。
- args 需要插入的元素
三、如何使用?
// vector::emplace
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector = {10,20,30};
auto it = myvector.emplace ( myvector.begin()+1, 100 );
myvector.emplace ( it, 200 );
myvector.emplace ( myvector.end(), 300 );
std::cout << "myvector contains:";
for (auto& x: myvector)
std::cout << ' ' << x;
std::cout << '\n';
return 0;
}
输出结果:myvector contains: 10 200 100 20 30 300
[1] http://www.cplusplus.com/reference/vector/vector/emplace/