- emplace_back
emplace_back
是 C++ STL 中 std::vector
和 std::list
等容器提供的一个成员函数,用于在容器的末尾直接构造一个新元素,而不是先创建一个临时对象再进行拷贝或移动操作。这样可以避免不必要的对象拷贝和移动,提高性能。
下面是一个简单示例,演示了如何使用 emplace_back
方法向 std::vector
中添加新元素:
#include <iostream>
#include <vector>
struct Person {
std::string name;
int age;
Person(const std::string& n, int a) : name(n), age(a) {}
};
int main() {
std::vector<Person> people;
// 使用 emplace_back 直接构造新元素
people.emplace_back("Alice", 25);
people.emplace_back("Bob", 30);
// 打印 vector 中的元素
for (const auto& person : people) {
std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;
}
return 0;
}
在这个示例中:
Person
结构体表示一个人,包含姓名和年龄。people.emplace_back("Alice", 25)
和people.emplace_back("Bob", 30)
直接在std::vector
中构造新的Person
对象,避免了额外的拷贝和移动操作。- 最后通过循环遍历
people
,打印每个人的姓名和年龄。
使用 emplace_back
可以提高代码的性能,并且使得代码更加简洁和清晰。希望这个示例能帮助你理解如何使用 emplace_back
。
- push_back
push_back
是 C++ STL 中 std::vector
和 std::list
等容器提供的一个成员函数,用于在容器的末尾添加一个新元素。与 emplace_back
不同,push_back
接受一个已存在的对象作为参数,会进行元素的拷贝或移动操作。
下面是一个简单示例,演示了如何使用 push_back
方法向 std::vector
中添加新元素:
#include <iostream>
#include <vector>
struct Person {
std::string name;
int age;
Person(const std::string& n, int a) : name(n), age(a) {}
};
int main() {
std::vector<Person> people;
// 使用 push_back 添加新元素
Person alice("Alice", 25);
people.push_back(alice);
// 直接使用临时对象作为参数
people.push_back(Person("Bob", 30));
// 打印 vector 中的元素
for (const auto& person : people) {
std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;
}
return 0;
}
在这个示例中:
Person
结构体表示一个人,包含姓名和年龄。- 首先通过
Person alice("Alice", 25)
创建一个Person
对象,然后使用people.push_back(alice)
将其添加到std::vector
中。 - 使用
people.push_back(Person("Bob", 30))
直接在push_back
中创建临时的Person
对象,并添加到std::vector
中。 - 最后通过循环遍历
people
,打印每个人的姓名和年龄。
push_back
是一个常用的方法,用于向容器中添加新元素。相比于 emplace_back
,它需要现有对象进行拷贝或移动,因此在性能上可能略逊一筹。希望这个示例能帮助你理解如何使用 push_back
。