C++ STL详解:array与vector操作指南
"该文档是关于STL(Standard Template Library, 标准模板库)的详细终稿,主要涵盖了`array`和`vector`两种容器的成员函数和操作。" 在C++的STL中,`array`和`vector`是两种常用的容器,它们都用于存储元素序列,但各有特点和适用场景。 `array`是一种固定大小的容器,它提供了一种静态数组的抽象。`array`的主要成员函数包括: 1. `begin()`和`end()`:返回数组的迭代器,分别指向首元素和超过末元素的位置。 2. `rbegin()`和`rend()`:返回反向迭代器,用于反向遍历数组。 3. `cbegin()`和`cend()`:返回常量迭代器,用于只读遍历。 4. `crbegin()`和`crend()`:返回反向常量迭代器,用于反向只读遍历。 5. `size()`:返回数组的元素数量。 6. `max_size()`:返回数组的最大可容纳元素数量。 7. `empty()`:检查数组是否为空。 8. `operator[]`:通过下标访问元素,无边界检查。 9. `at()`:通过下标访问元素,有边界检查。 10. `front()`和`back()`:分别获取第一个和最后一个元素。 11. `data()`:返回存储数组元素的原始指针。 12. `fill()`:用指定值填充整个数组。 13. `swap()`:交换两个数组的内容。 14. `get(array)`:可能是指获取数组对象的操作。 15. `relationaloperators(array)`:比较运算符,如等于、不等于、小于等,用于比较两个`array`对象。 `vector`是一种动态数组,大小可以随需调整。其成员函数包括: 1. `vector::vector()`和`~vector()`:构造和析构函数。 2. `operator=`:赋值操作符,用于复制一个`vector`。 3. `begin()`, `end()`, `rbegin()`, `rend()`, `cbegin()`, `cend()`, `rcbegin()`, `rcend()`:与`array`类似,提供不同类型的迭代器访问。 4. `size()`和`max_size()`:获取当前元素数量和最大可容纳元素数。 5. `resize()`:改变容器大小,可以添加或删除元素。 6. `capacity()`:返回当前分配的内存空间,即可以容纳的元素数量。 7. `reserve()`:预先分配内存,避免频繁的内存重新分配。 8. `shrink_to_fit()`:请求将容量减小到实际元素数,优化内存使用。 9. `operator[]`和`at()`:访问元素,`at()`同样提供边界检查。 10. `front()`和`back()`:获取首尾元素。 11. `data()`:返回元素的原始指针。 12. `assign()`:替换现有元素序列。 13. `push_back()`:在末尾添加元素。 14. `pop_back()`:移除最后一个元素。 15. `insert()`:在指定位置插入元素。 16. `erase()`:删除指定位置的元素。 17. `swap()`:交换两个`vector`的内容。 18. `clear()`:清空`vector`的所有元素。 19. `emplace()`和`emplace_back()`:在指定位置或末尾直接构造元素,避免复制。 20. `get_allocator()`:获取`vector`的分配器对象。 21. `relationaloperators(vector)`:比较运算符,用于`vector`之间的比较。 22. `swap(vector)`:独立的`swap`函数,用于交换两个`vector`的内容。 `array`和`vector`的选择通常基于对内存管理的需求。`array`适合大小已知且不会改变的情况,提供更好的性能;而`vector`适用于需要动态调整大小的情况,但在插入和删除元素时可能有额外开销。
![](https://csdnimg.cn/release/download_crawler_static/86348830/bg8.jpg)
![](https://csdnimg.cn/release/download_crawler_static/86348830/bg9.jpg)
剩余42页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/d974aaab81c1462a84a8258105b8adb2_weixin_35815036.jpg!1)
- 粉丝: 17
- 资源: 282
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)