OI-STL 一本通

OI-STL 一本通

@

注:

默认情况下,下标从 \(0\) 开始。

图例解释:

*

可选参数

v

参与操作数组。以 vector<> 为例。

注:此处 v.begin() 和 v.end() 也指数组 头 和 尾 指针。

cmp

比较函数。

u

元素。

i

元素位置。

\(O(sx)\)

s,b为常数,分别代表小常数,大常数。

这表示时间复杂度为 \(O(x)\),有常数。

?即不确定。

排列函数

关于数组排列的函数

next_permutation(v.begin(),v.end(),*cmp)

\(O(s)\),字典序从小到大的下一个排列顺序。

prev_permutation(v.begin(),v.end(),*cmp)

同上,字典序从大到小。

sort(v.begin(),v.end(),*cmp)

\(O(-1)\),平均 \(O(s\times n\log n)\) 从小到大排序。

reverse(v.begin(),v.end())

\(O(n)\),将字符串倒转。

字符串函数

string

字符串类型,有如下指令:

[i]

\(O(s)\),取得/修改第 i 个字符。

+ (string/char*)

\(O(s\times n)\),在字符串末尾添加字符串。

.length()

\(O(n)\),取得字符串长度。

.substr(i,len)

\(O(s\times n)\),string(返回值,以后都是在这个位置),从第 i 个字符开始向后截取 len 个字符成为新的字符串。

模板类

vector<>

不定长数组,有如下指令:

[i]

近似 \(O(1)\),取得/修改第 i 个元素。

.push_back(u)

近似 \(O(1)\),在数组后面添加元素。

.clear()

\(O(s\times n)\) ?,清空。

.size()

近似 \(O(1)\),数组大小。

.begin() & .end()

\(O(1)\),取数组前端迭代器 和 后端迭代器。

map<>

字典,有如下指令:

[u]

\(O(s\times\log n)\),取得/修改元素 u 在字典中对应的值。

取不到则为类型初始值。

queue<>

队列,有如下指令:

.empty()

近似 \(O(1)\)? bool,返回队列是否为空。

.front()

近似 \(O(1)\),取队列最前端元素。

.pop()

近似 \(O(1)\),void,弹出最前端元素。

.push(v)

近似 \(O(1)\),在队尾插入元素。

priority_queue<>

优先队列,命令与 queue<> 基本一致。

默认是大根堆。

时间复杂度部分变为 \(O(s\times\log n)\)

posted @ 2021-10-08 19:28  Lotuses-robot  阅读(80)  评论(0)    收藏  举报