C++ Vector详解:使用与二维数组定义
需积分: 9 110 浏览量
更新于2024-07-31
收藏 140KB DOC 举报
"C++ 中的`std::vector`类是一个重要的容器,用于动态数组的管理和操作。它允许在运行时动态地添加或删除元素。在C++编程中,`vector`是一个非常常用的工具,尤其在处理序列数据时。以下是关于`vector`类的一些关键知识点和用法。
1. **向量的创建与初始化**
- `vector`可以不指定大小直接创建,如`vector<int> v;`,然后通过`push_back()`方法逐个添加元素。
- 可以通过指定初始大小和默认值进行初始化,如`vector<int> v(10, 0);`创建一个包含10个0的`vector`。
2. **元素的插入与访问**
- `push_back()`方法将元素追加到`vector`末尾。
- `size()`成员函数返回`vector`中的元素数量。
- 使用索引访问元素,例如`v[0]`获取第一个元素。
- `begin()`返回指向第一个元素的迭代器,`end()`返回指向超出最后一个元素位置的迭代器,常用于遍历`vector`。
3. **迭代器的使用**
- 迭代器是一种特殊指针,可以用来遍历`vector`的元素。如`vector<int>::iterator iter;`声明一个迭代器,然后通过`iter = v.begin();`和`iter != v.end();`条件进行循环遍历。
4. **二维`vector`的定义与操作**
- 定义二维`vector`时,可以创建一个`vector`,其元素是其他`vector`。例如,`vector<vector<int>> Array(10, vector<int>(0));`创建一个10行的二维`vector`,每行初始为空。
- `push_back()`可以用于向二维`vector`的子`vector`中添加元素,如`Array[j].push_back(i);`。
- 遍历二维`vector`时,需要两个嵌套循环,一个用于行,一个用于列。
5. **动态扩展与内存管理**
- 当`vector`容量不足时,它会自动扩展其容量,通常以一定比例(通常是1.5倍或2倍)增长。这个过程可能会导致元素重新分配,因此在性能敏感的代码中需要注意。
- `reserve()`函数可以预分配空间,避免不必要的自动扩展。
6. **其他成员函数**
- `insert()`可以在指定位置插入元素。
- `erase()`可以删除一个或多个元素。
- `clear()`清除所有元素,但不释放内存。
- `capacity()`返回当前已分配的内存,可容纳的元素数量。
- `resize()`可以改变`vector`的大小,添加或删除元素。
7. **注意事项**
- 访问超出`vector`范围的元素会导致未定义行为。
- 在`vector`的生命周期内,避免同时使用迭代器和修改`vector`(如插入、删除元素),因为这可能导致迭代器失效。
掌握这些基本操作后,可以利用`vector`的强大功能在各种场景下处理数组数据,包括动态数组、矩阵运算、数据结构实现等。在实际编程中,熟练运用`vector`可以提高代码的灵活性和效率。
2024-12-23 上传
2024-12-23 上传
五相电机邻近四矢量SVPWM模型-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿
2024-12-23 上传
2024-12-23 上传
2024-12-23 上传
2024-12-23 上传
2024-12-23 上传
mingyanghuanyu
- 粉丝: 0
- 资源: 4