vector的相关操作
时间: 2025-08-30 09:49:49 AIGC 浏览: 8
### 关于 Vector 的数据结构及其操作
#### 定义与初始化
`vector<int> ivec(ia, ia + 5);` 表明创建了一个 `int` 类型的向量,该向量包含了来自数组 `ia` 中前五个元素的副本[^1]。
```cpp
#include <iostream>
#include <vector>
using namespace std;
void printVector(const vector<int>& vec){
for(int i : vec){
cout << i << " ";
}
cout << endl;
}
int main(){
int ia[] = {0, 1, 2, 3, 4, 5};
// 使用两个迭代器来指定范围并初始化vector
vector<int> ivec(begin(ia), begin(ia) + 5);
printVector(ivec);
return 0;
}
```
这段代码展示了如何利用给定区间内的整数序列初始化一个名为 `ivec` 的向量实例,并打印出来验证其内容。
#### 修改元素值的方法
由于 `vector` 不支持直接通过下标修改元素的方式,因此需要借助迭代器完成此功能。下面的例子说明了怎样定位特定位置上的项目并通过解引用运算符 (`*`) 更改它的数值:
```cpp
if (!ivec.empty()) {
auto it = ivec.begin(); // 获取指向第一个元素的迭代器
*it = 99; // 将首个元素设为99
}
printVector(ivec);
```
这里先检查容器是否为空以防越界访问错误;接着获取首项地址再执行更新动作最后再次展示整个列表确认变更效果。
对于更复杂的索引情况,则可以采用标准库函数如 `std::advance()` 来移动迭代器至目标偏移处实现精准控制。
#### 增删成员对象的操作指南
除了上述基本读写外,还经常涉及到动态调整大小的需求——即增加新条目或删除已有记录。为此 C++ STL 提供了一系列便捷接口用于处理这些情形下的集合变换逻辑。
##### 添加单个/多个元素
- **push_back()**: 向末端追加单一实体。
```cpp
ivec.push_back(78);
printVector(ivec);
```
- **insert()**: 插入一批连续排列的新成员到任意指定地点之前
```cpp
auto pos = find_if_not(ivec.cbegin(), ivec.cend(), [](const int& val){return val % 2 == 0;});
if (pos != end(ivec)){
ivec.insert(pos, {-1,-2,-3});
}
printVector(ivec);
```
此处运用了查找算法寻找奇数位之后的位置准备插入三个负整数形成新的子串。
##### 移除选定部分
- **pop_back()**: 清理掉最后一个节点
```cpp
while(!ivec.empty()){
ivec.pop_back();
printVector(ivec);
}
```
- **erase()**: 删除由一对边界界定的一段区域
```cpp
// 这里假设已经重新填充了一些测试用的数据进入vecotr...
auto first = lower_bound(ivec.cbegin(), ivec.cend(), -2);
auto last = upper_bound(first, ivec.cend(), -1);
if ((first!=last)&&(first!=ivec.end())){
ivec.erase(first,last);
}
printVector(ivec);
```
以上就是有关 `vector` 结构的一些核心特性介绍以及常见编辑手段概述。
阅读全文
相关推荐





