- 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。
C++STL:emplace_back与push_back:高效添加元素的比较
604

被折叠的 条评论
为什么被折叠?



