C++中vector容器详解
时间: 2025-03-22 08:08:53 浏览: 33
`std::vector` 是 C++ 标准模板库 (STL) 提供的一种动态数组容器,它能够自动调整大小,并允许随机访问元素。相比普通数组,`std::vector` 更加灵活、安全,因为它支持动态扩容并且具备多种便捷的操作函数。
以下是 `std::vector` 的一些核心功能和特点:
### 特点
1. **动态增长**:当向 `vector` 中添加新元素而空间不足时,`vector` 会自动分配更大的内存并复制原有数据到新的位置。
2. **随机存取**:通过索引可以快速访问任意位置的元素(时间复杂度 O(1))。
3. **连续存储**:所有元素都存储在一个连续的内存块中。
### 常见成员函数
#### 构造与初始化
- `std::vector<T> v;` 创建一个空的 vector 容器。
- `std::vector<int> v(n);` 创建包含 n 个默认值为0的 int 元素的 vector。
- `std::vector<int> v = {x1, x2, ..., xn};` 使用初始列表创建含有特定值的 vector。
#### 插入操作
- `.push_back(x)` 在尾部插入单个元素 x。
- `.emplace_back(args...)` 在尾部构造一个新的对象作为最后一个元素。
- `.insert(pos, val)` 在指定位置 pos 插入单个或多个相同的值 val。
#### 删除操作
- `.pop_back()` 移除最后的一个元素。
- `.erase(it)` 或者 `.erase(start_it, end_it)` 删除迭代器指向的某个或某段范围内的元素。
#### 访问元素
- `[i]` / `.at(i)` 返回第 i+1 个元素,其中 .at() 检查越界情况。
- `.front()` 获取第一个元素。
- `.back()` 获取最后一个元素。
#### 状态信息获取
- `.size()` 当前有效元素的数量。
- `.capacity()` 分配给此矢量的最大长度之前不需要再次重新定位内部缓冲区。
- `.empty()` 判断是否为空。
### 示例代码
```cpp
#include <iostream>
#include <vector>
int main(){
std::vector<int> vec;
// 添加元素
for(int i=0;i<5;i++) {
vec.push_back(i);
}
// 遍历打印
for(auto &num : vec){
std::cout << num << " ";
}
}
```
### 性能分析
虽然 `std::vector` 动态扩张机制很便利,但在频繁增删场景下效率较低;此外由于每次扩张都需要拷贝旧内容至新区间,所以如果涉及大对象建议提前预留足够容量避免多次迁移耗费资源。
阅读全文
相关推荐


















