在C++中,emplace_back
函數用于在容器的尾部直接構造一個新對象,并將其插入容器中。它是使用構造函數的參數來構造新對象,而不是使用拷貝構造函數或移動構造函數。
emplace_back
函數通常用于在容器中插入新元素,避免了額外的拷貝或移動操作,提高了性能。
下面是emplace_back
函數的用法示例:
#include <iostream>
#include <vector>
struct MyObject {
int value;
MyObject(int v) : value(v) {
std::cout << "Construct: " << value << std::endl;
}
MyObject(const MyObject& other) : value(other.value) {
std::cout << "Copy Construct: " << value << std::endl;
}
MyObject(MyObject&& other) noexcept : value(std::move(other.value)) {
std::cout << "Move Construct: " << value << std::endl;
}
};
int main() {
std::vector<MyObject> myVector;
myVector.emplace_back(1);
myVector.emplace_back(2);
myVector.emplace_back(3);
return 0;
}
輸出結果為:
Construct: 1
Construct: 2
Construct: 3
可以看到,emplace_back
函數直接在容器中構造了新的MyObject
對象,而不是通過拷貝或移動構造函數。這種方式避免了不必要的構造函數調用和拷貝操作,提高了性能。