C++vector动态数组
时间: 2025-03-29 11:07:32 浏览: 32
### C++ 中 `vector` 的基本概念
`vector` 是 C++ 标准模板库(STL)中的一个重要容器,它是一个动态数组[^1]。与普通的静态数组不同的是,`vector` 可以自动调整大小来适应存储需求的变化。
---
### 创建和初始化 `vector`
可以通过多种方式创建并初始化一个 `vector`:
#### 默认构造
```cpp
std::vector<int> v;
```
这会创建一个空的整数型向量。
#### 初始化列表
```cpp
std::vector<int> v = {1, 2, 3, 4};
```
通过大括号内的初始值列表定义向量的内容。
#### 指定长度和默认值
```cpp
std::vector<int> v(5, 0); // 创建一个包含 5 个元素且每个元素都为 0 的向量
```
---
### 访问 `vector` 元素的方法
可以使用不同的方法访问 `vector` 容器中的元素[^2]:
#### 下标运算符 []
```cpp
v[0]; // 返回第一个元素
```
注意:如果索引超出范围,则行为未定义。
#### 成员函数 `at()`
```cpp
v.at(0); // 返回第一个元素,并在越界时抛出 std::out_of_range 异常
```
#### 获取首尾元素
```cpp
v.front(); // 返回第一个元素
v.back(); // 返回最后一个元素
```
#### 转换为裸指针
```cpp
int* raw_ptr = v.data(); // 返回指向底层数据的第一个元素的指针
```
---
### 遍历 `vector` 方法
`vector` 支持两种主要的遍历方式:基于下标的循环以及迭代器的使用。
#### 基于下标的遍历
```cpp
for (std::vector<int>::size_type i = 0; i != v.size(); ++i) {
std::cout << v[i] << " ";
}
```
#### 迭代器遍历
```cpp
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
```
这里需要注意的是,在现代 C++(C++11 或更高版本),推荐使用更简洁的方式实现上述功能:
```cpp
// 自动推导类型
for (auto it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
// range-based for 循环
for (const auto& elem : v) {
std::cout << elem << " ";
}
```
---
### 修改 `vector` 大小的操作
以下是常用的修改 `vector` 尺寸的功能:
#### 添加单个元素到末尾
```cpp
v.push_back(value);
```
#### 插入多个元素至指定位置
```cpp
v.insert(v.begin(), value); // 在开头插入新元素
```
#### 删除最后的一个或多个元素
```cpp
v.pop_back();
```
#### 清除所有元素
```cpp
v.clear();
```
以上操作均会影响内部容量管理机制,当实际数量超过当前分配空间时,`vector` 会重新分配更大的内存区域并将旧的数据复制过去。
---
### 总结
综上所述,`vector` 提供了一种灵活高效的解决方案用于处理具有变化尺寸的需求场景下的线性序列存储问题。其丰富的接口使得无论是简单的读写还是复杂的算法设计都能轻松应对。
阅读全文
相关推荐

















