C++ STL详解:vector与set操作演示
需积分: 0 146 浏览量
更新于2024-08-30
收藏 69KB DOC 举报
"STL.doc滴滴滴滴"
STL(Standard Template Library,标准模板库)是C++编程语言中的一部分,它提供了高效且灵活的数据结构和算法。在这个文档中,主要介绍了两个重要的容器:`vector`和`set`,以及与它们相关的操作。
1. **vector动态数组**
`vector`是一种动态数组,它允许在运行时调整大小。可以使用下标或者迭代器进行访问。`#include<vector>`用于包含`vector`相关的头文件。以下是一些基本操作的例子:
- **大小**:通过`size()`函数获取vector的元素个数。
- **是否为空**:使用`empty()`检查vector是否为空。
- **增加**:`push_back()`在vector末尾添加元素。
- **插入**:`insert()`允许在指定位置插入元素,例如在下标3的位置插入9。
- **删除**:`erase()`用于删除单个元素或一段元素,`pop_back()`删除最后一个元素,`clear()`清空所有元素。
- **排序**:使用`sort()`对vector进行排序,可选地提供自定义比较函数`cmp`。
- **查找**:`find()`函数寻找特定元素,如果找到则返回迭代器,否则返回`end()`。
- **迭代器**:提供了正向和反向迭代器,以及遍历vector的方法。
2. **迭代器**
迭代器是STL中访问容器内元素的主要方式,有以下几种类型:
- **正向迭代器**:`begin()`返回首元素的迭代器,`end()`返回超出末尾的迭代器。
- **反向迭代器**:`rbegin()`返回末元素的反向迭代器,`rend()`返回前于首元素的反向迭代器。
- **遍历**:可以使用迭代器遍历vector,例如通过for循环实现。
3. **reverse函数**
`reverse()`函数用于反转容器内的元素,例如反转`vector`中的一部分。
4. **set集合**
`set`是一个自动去重并自动排序的容器。`#include<set>`用于包含set相关的头文件。set支持的操作包括:
- **大小**:同样通过`size()`获取元素数量。
- **是否为空**:使用`empty()`判断set是否为空。
- **插入**:`insert()`插入元素到set中,自动处理重复项。
- **查找**:`find()`查找指定元素并返回迭代器。
set还支持自定义排序规则,例如使用`greater<int>`可以使元素按降序排列。
5. **set的特性**
- **自动去重**:set中的元素不允许重复,插入时会自动去除重复项。
- **自动排序**:set会自动根据元素的比较规则进行排序,默认是升序,可以通过模板参数自定义排序方式。
在实际编程中,STL容器如`vector`和`set`以及它们提供的操作极大地提高了代码的效率和可读性。理解并熟练运用这些数据结构和算法,对于提升C++编程能力至关重要。
2022-09-24 上传
2010-12-28 上传
2009-03-18 上传
2010-12-22 上传
点击了解资源详情
2022-09-14 上传
2022-09-19 上传
2022-09-24 上传
2008-01-18 上传
Cazkeen
- 粉丝: 3
- 资源: 6
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍