emplace函数用于在容器中插入元素,并且避免了拷贝操作,直接在容器内构造对象。下面是一个简单的示例,展示了emplace函数的应用:
#include <iostream>
#include <vector>
class Person {
public:
Person(std::string name, int age) : name(name), age(age) {
std::cout << "Constructing " << name << std::endl;
}
~Person() {
std::cout << "Destructing " << name << std::endl;
}
private:
std::string name;
int age;
};
int main() {
std::vector<Person> people;
// 使用emplace_back函数来插入元素
people.emplace_back("Alice", 25);
people.emplace_back("Bob", 30);
return 0;
}
在上面的示例中,我们定义了一个Person类,包含一个名字和年龄的成员变量。我们创建了一个vector容器people,并使用emplace_back函数来插入两个Person对象。在构造和析构函数中,我们输出了对象的名字,以便查看对象的生命周期。
输出结果应该如下所示:
Constructing Alice
Destructing Alice
Constructing Bob
Destructing Bob
可以看到,使用emplace函数插入元素时,构造函数被调用来构造对象,而不需要进行拷贝操作,从而提高了效率。