C++ STL 快速入门:核心函数详解

需积分: 11 0 下载量 157 浏览量 更新于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++编程的效率和代码质量。在实际应用中,根据需求选择合适的容器和算法,可以更好地管理和处理数据。