C++ STL 快速入门:核心函数详解
需积分: 11 130 浏览量
更新于2024-08-31
收藏 686B TXT 举报
"STL常用函数总结"
在C++标准模板库(STL)中,程序员可以利用各种容器、迭代器和算法来高效地处理数据。以下是一些常用的STL函数,这些函数涵盖了`vector`、`set`、`map`、`priority_queue`以及`unordered_map`等容器的主要操作。
1. **`vector`**: `vector<int> vec` 是一个整数类型的动态数组。`iterator` 是一种指针,可以用来遍历和操作数组元素。
- `vec.push_back(t)`: 向向量末尾添加一个元素`t`。
- `vec.pop_back()`: 移除向量的最后一个元素。
- `vec.erase(a.begin()+5)`: 删除指定位置的元素,如第五个元素(基于零索引)。
- `vec.erase(it+1, it+4)`: 删除迭代器`it+1`到`it+4`之间的元素范围。
2. **`set`**: `set<int> se` 是一个不包含重复元素的集合。
- `se.insert(t)`: 将元素`t`插入集合,如果已经存在,则不进行操作。
- `se.count(t)`: 返回元素`t`在集合中出现的次数,对于`set`总是0或1。
- `se.empty()`: 检查集合是否为空。
- `se.erase(t)`: 删除集合中的元素`t`。
- `se.erase(b.begin()+5)`: 删除集合中指定位置的元素。
- `se.find()`: 查找元素`t`,返回迭代器指向找到的位置,如果找不到则返回`end()`。
3. **`map`**: `map<key, value> m` 是一个键值对的关联容器。
- `m.insert(pair<int, string>(123, "abc"))`: 插入一个键值对`(123, "abc")`。
- `m.begin()->first`: 获取第一个键值对的键。
- `m.begin()->second`: 获取第一个键值对的值。
- `m.find(t)`: 查找键`t`,返回迭代器指向找到的位置,如果找不到则返回`end()`。
- `m.erase(t)`: 删除键`t`对应的键值对。
- `m.count(t)`: 返回键`t`在映射中出现的次数,对于`map`总是0或1。
4. **`priority_queue`**: 优先队列,可以是升序(小根堆)或降序(大根堆)。
- `priority_queue<int, vector<int>, greater<int>> q`: 创建一个升序优先队列。
- `priority_queue<int, vector<int>, less<int>> q`: 创建一个降序优先队列。
- `priority_queue<int> q`: 默认创建大根堆。
- `q.push()`: 向队列中添加一个元素。
- `q.top()`: 获取但不删除队列顶部的元素。
- `q.pop()`: 移除并返回队列顶部的元素。
5. **`unordered_map`**: 哈希表,提供了近似常数时间的查找和插入操作。
- `unordered_map<key, value> m`: 创建一个键值对的哈希表。
- 操作与`map`类似,但通常执行速度更快,因为查找基于哈希函数而非树结构。
了解并熟练使用这些STL函数可以极大地提高C++编程的效率和代码质量。在实际应用中,根据需求选择合适的容器和算法,可以更好地管理和处理数据。
4798 浏览量
3554 浏览量
146 浏览量
158 浏览量
689 浏览量
540 浏览量
294 浏览量
238 浏览量

刘寺杰
- 粉丝: 0
最新资源
- Arduino数据导入Rarduinor的简易方法
- JavaScript日期时间选择器字段类型解析
- 批量上传工具:ASP网站自解压程序
- 实用JS日期插件及使用方法介绍
- Web开发者的必备工具:高效取色器
- CAD机械零件图纸300张集合分享
- C#多语言版本ZedGraph v5.1.5绘图工具发布
- React项目集成Sentry错误监控演示教程
- C++ OBJ文件解析器:使用OpenGL技术
- Arduino PMS5003空气质量传感器库使用指南
- VBA教程:如何打印Picturebox中的全部内容
- C++源码合集:斐波那契、乘法表及复杂图形绘制
- HTML星空效果实现:追光者之旅
- Dubbo服务集成示例教程及Zookeeper配置指南
- 企业级通用进销存软件:中小型商业企业的物流管理解决方案
- EspTouchForIOS:iOS设备智能连接路由器方法