emplace_back 是 C++ 中 vector 容器的一个成员函数,用于在容器的末尾直接构造一个新元素,并将其插入到容器中。

push_back 不同,emplace_back 允许你将参数直接传递给元素类型的构造函数,而不需要创建临时对象。这使得它更加高效,并且可以方便地在容器中构造自定义类型的对象。

下面是一个简单的示例,演示了 emplace_back 的用法:

#include <iostream>
#include <vector>

class MyObject {
public:
    MyObject(int val1, double val2) : value1(val1), value2(val2) {
        std::cout << "Constructor called: " << value1 << ", " << value2 << std::endl;
    }

private:
    int value1;
    double value2;
};

int main() {
    std::vector<MyObject> vec;

    // 使用 emplace_back 插入元素,直接调用 MyObject 的构造函数
    vec.emplace_back(1, 3.14);
    vec.emplace_back(2, 6.28);

    return 0;
}

在这个示例中,emplace_back 直接将参数传递给 MyObject 类型的构造函数,而不需要创建临时对象。这样可以提高效率,并且使代码更简洁。