21
我想知道這兩者之間有什麼區別。我注意到emplace是C++ 11的補充。那麼爲什麼加入?C++ std :: vector emplace vs insert
我想知道這兩者之間有什麼區別。我注意到emplace是C++ 11的補充。那麼爲什麼加入?C++ std :: vector emplace vs insert
Emplace採用必要的參數來構造一個對象,而插入需要(引用)對象。
struct Foo
{
Foo(int n, double x);
};
std::vector<Foo> v;
v.emplace(someIterator, 42, 3.1416);
v.insert(someIterator, Foo(42, 3.1416));
insert
拷貝對象到載體中。
emplace
構造它們在向量內部。
請注意,在C++ 11中'insert'不需要複製,它也可以移動。 – juanchopanza 2013-02-09 12:47:34
值得一提的是,雖然插入可能會移動,如果它使用右值轉換,它可能不會。因此,Scott Meyer建議儘可能使用emplace來表現清晰。 – jeremyong 2013-12-06 23:37:43