竞赛常用STL
发布网友
发布时间:2024-10-24 02:09
我来回答
共1个回答
热心网友
时间:2024-10-25 12:06
在编码过程中,经常会遇到忘记STL库中函数用法的情况。本篇将整理一些常用的STL函数,以方便查阅。以下为STL函数的分类及具体使用方法。
**函数容器**
**排序函数sort**
sort函数的时间复杂度为O(nlogn),使用模板实现。其中begin和end分别为目标容器的首尾迭代器;而cmp函数定义了排序方式,未定义时默认升序排序。需要自定义cmp函数实现降序等特定排序需求。
**lower_bound & upper_bound**
lower_bound与upper_bound函数用于有序且支持随机访问的容器中查找元素。lower_bound返回第一个大于等于给定值的元素位置,若存在相等元素则返回其首个位置;upper_bound返回第一个大于给定值的元素位置。
**容器**
**vector向量**
vector提供动态数组功能,元素连续存储,可通过索引快速访问。支持调整大小。
**map映像**
map为键值对映射,通过键访问值,提供查找、插入、删除等操作。模板实现。
**set集合**
set为有序、不重复的集合,元素唯一,按排序准则排序。模板实现。
**multiset多重集合**
多于set,允许存储重复元素,模板实现。
**queue队列**
队列遵循先进先出(FIFO)原则,新元素末尾插入,最早元素优先删除。模板实现。
**deque双端队列**
deque为双端队列,FIFO原则,两端均可插入和删除元素。模板实现。
**priority_queue优先队列**
优先队列按元素优先级排序访问,默认最大堆(大顶堆),优先级高者优先。模板实现。
**stack栈**
栈遵循LIFO原则,只能在栈顶插入和删除元素,新元素末尾插入,最早插入元素最先删除。模板实现。
**list链表**
list为双向链表,提供高效插入和删除元素功能。相比vector和数组,任意位置操作开销为常数时间。模板实现。