C++ Vector详解:使用与二维数组定义
需积分: 9 159 浏览量
更新于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`可以提高代码的灵活性和效率。
2020-09-03 上传
2022-04-21 上传
2020-12-31 上传
mingyanghuanyu
- 粉丝: 0
- 资源: 4
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程