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函數插入元素時,構造函數被調用來構造對象,而不需要進行拷貝操作,從而提高了效率。