2013-10-23 50 views
4

如何將創建對象的參數完美地轉發給STL集合?如何將參數完美地轉發給STL集合?

我想避免不必要的副本。雖然我可以通過存儲指針來避免這種情況,但我不想使用動態內存。

struct MyFatClass 
{ 
    explicit MyFatClass(int a) {...} 
    ... 
}; 

std::vector<MyFatClass> records; 
records.emplace_back(MyFatClass(1000)); // How can I avoid this temporary object? 

回答

8

你實際上並不需要創建一個臨時使用std::vector::emplace_back時,這正是emplace_back用於:

records.emplace_back(1000); 

這將構建一個MyFatClass對象就地,避免臨時工和額外副本。