std::vector增加元素
时间: 2025-05-22 12:34:43 浏览: 19
### 向 `std::vector` 添加元素的方式
在 C++ 中,可以使用多种方法向 `std::vector` 动态数组中添加新元素。这些方法各有特点,适合不同的应用场景。
#### 1. 使用 `push_back`
`push_back` 是一种常见的方法,用于将单个元素追加到 `std::vector` 的末尾。它接受一个已经存在的对象作为参数,并将其拷贝或移动到容器内部。
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
int element = 42;
vec.push_back(element); // 将已有的整数加入向量
vec.push_back(100); // 直接传入字面值
for (const auto& elem : vec) {
std::cout << elem << ' '; // 输出: 42 100
}
return 0;
}
```
当调用 `push_back` 方法时,如果当前容量不足以容纳新增的元素,则会触发重新分配内存的过程[^3]。这意味着可能会发生多次复制操作以调整底层数组大小。
#### 2. 使用 `emplace_back`
相比 `push_back`,`emplace_back` 提供了更高的灵活性和性能优势。因为它直接在目标位置上调用了给定类型的构造函数来创建对象,而不是先构建好再移入容器内。
```cpp
#include <iostream>
#include <vector>
#include <string>
struct Person {
std::string name;
int age;
Person(const std::string& n, int a) : name(n), age(a) {}
};
int main() {
std::vector<Person> people;
people.emplace_back("Alice", 30);
people.emplace_back("Bob", 25);
for (const auto& person : people) {
std::cout << person.name << ", " << person.age << '\n';
}
return 0;
}
```
这里展示了如何利用完美转发技术通过 `emplace_back` 构造复杂的数据结构实例而不需额外步骤[^5]。
#### 3. 初始化列表赋值
除了逐条插入外,还可以一次性初始化整个集合的内容:
```cpp
std::vector<double> values = {1.1, 2.2, 3.3};
// 或者
std::vector<std::string> names{"Tom", "Jerry"};
```
此方式特别适用于预先知晓所有项的情形下快速填充初始状态下的容器[^1].
---
###
阅读全文
相关推荐


















