c++stl-VECTOR
时间: 2024-12-27 12:19:28 浏览: 7
### C++ STL Vector 使用指南
#### 向量简介
`std::vector` 是一种动态数组,能够自动调整大小来容纳新元素。相比固定尺寸的 `std::array`,它提供了更灵活的数据存储方式[^4]。
#### 创建与初始化
可以创建不同类型的向量并对其进行初始化:
```cpp
// 定义一个整数型向量
std::vector<int> intVector;
// 初始化含有三个元素{1, 2, 3}的向量
std::vector<int> initVector = {1, 2, 3};
// 使用n个相同值elem初始化向量
size_t n = 5;
int elem = 7;
std::vector<int> sameValueVec(n, elem);
```
#### 添加和移除元素
支持多种方法用于增加或减少向量内的项目数量:
- **push_back()**: 在向量末尾追加单个项目。
```cpp
int newItem = 9;
intVector.push_back(newItem); // 追加到末尾
```
- **pop_back()**: 移除最后一个元素而不返回其值。
```cpp
if (!intVector.empty()) {
intVector.pop_back();
}
```
- **insert()**: 插入多个元素至指定位置。
```cpp
auto pos = intVector.begin() + 2; // 指定插入的位置
intVector.insert(pos, 4); // 单一数值插入
intVector.insert(pos, 3, 6); // 多个重复数值插入
```
- **erase()**: 删除特定范围内的元素或者通过迭代器删除单一元素[^2]。
```cpp
// 清除第一个元素
if(!intVector.empty()){
intVector.erase(intVector.begin());
}
// 或者清除某个具体位置上的元素
size_t indexToRemove = 3;
if(indexToRemove < intVector.size()){
intVector.erase(intVector.begin() + indexToRemove);
}
```
#### 访问元素
提供安全的方式访问内部储存的内容:
- **下标运算符[]**
- **at()** 方法(带边界检查)
```cpp
if (!initVector.empty()) {
std::cout << "First element is " << initVector[0];
try{
std::cout << "\nor first with at(): " << initVector.at(0);
} catch(const std::out_of_range& e){
std::cerr << "Error accessing out of range.";
}
}
```
#### 赋值操作
允许整体替换现有内容或将两个对象之间的数据互相交换[^5]:
```cpp
// 整体复制另一个向量的内容
sameValueVec.assign(initVector.begin(), initVector.end());
// 数据交换
sameValueVec.swap(initVector);
// 等价于上面的操作也可以这样写
sameValueVec = initVector;
```
阅读全文