2021考研408数据结构C++ vector动态数组详解
什么是vector
vector是C++标准模板库(STL)中的一个重要容器,它可以看作是一个能够存放任意类型元素的动态数组。与普通数组相比,vector最大的优势在于它能够根据需要自动调整大小,无需程序员手动管理内存。
在2021考研408数据结构考试中,熟练掌握vector的使用对于解决编程题至关重要。本文将全面介绍vector的各种用法和注意事项。
vector的声明与初始化
使用vector前需要包含头文件:
#include <vector>
vector有多种初始化方式:
vector<int> v1; // 创建一个空vector
vector<int> v2(v1); // 创建v1的副本
vector<int> v3(5, 1); // 创建包含5个1的vector
vector<int> v4(5); // 创建5个默认初始化为0的vector
特别注意:
vector<int> a(5); // 创建一个包含5个0的vector
vector<int> a[5]; // 创建包含5个空vector的数组
vector的常用操作
vector提供了丰富的成员函数来操作元素:
v.empty(); // 判断是否为空
v.size(); // 获取元素个数
v.push_back(t); // 在末尾添加元素
v.pop_back(); // 删除末尾元素
v.clear(); // 清空所有元素
v.front(); // 访问第一个元素
v.back(); // 访问最后一个元素
v[n]; // 通过下标访问元素
vector的迭代器
迭代器是访问vector元素的另一种方式:
// 正向迭代
for(auto it = v.begin(); it != v.end(); it++) {
cout << *it << endl;
}
// 反向迭代
for(auto it = v.rbegin(); it != v.rend(); it++) {
cout << *it << endl;
}
vector的高级操作
vector还提供了一些高级操作:
v.assign(n, val); // 将vector赋值为n个val
v.insert(pos, val); // 在指定位置插入元素
v.erase(pos); // 删除指定位置元素
v.resize(n); // 调整vector大小
v.reserve(n); // 预留空间
v.swap(other); // 交换两个vector内容
vector的二维数组实现
vector可以方便地实现二维数组:
vector<vector<int>> matrix(5, vector<int>(3)); // 5行3列矩阵
// 访问元素
matrix[0][0] = 1;
// 动态添加行
matrix.push_back(vector<int>(3));
使用vector的注意事项
- 避免越界访问:使用
v[n]前确保n小于v.size() - 效率考虑:频繁插入删除时考虑使用list
- 参数传递:作为函数参数时使用引用传递
void func(vector<int>& v) - 内存管理:大容量vector可能导致内存问题
常见错误示例
vector<int> v;
for(int i=0; i<10; i++) {
v[i] = i; // 错误!v尚未分配空间
}
// 正确做法
for(int i=0; i<10; i++) {
v.push_back(i);
}
通过本文的学习,相信你已经掌握了vector的基本用法和常见技巧。在考研408数据结构考试中,合理使用vector可以大大提高编程题的解决效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



