C++ STL 快速入门:核心函数详解
需积分: 11 79 浏览量
更新于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++编程的效率和代码质量。在实际应用中,根据需求选择合适的容器和算法,可以更好地管理和处理数据。
275 浏览量
2023-08-24 上传
2020-09-03 上传
2018-09-01 上传
2022-04-30 上传
2021-06-06 上传
2017-06-13 上传
2016-05-15 上传
刘寺杰
- 粉丝: 0
- 资源: 4
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍