OI-STL 一本通
Posted Lotuses-robot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)\\) 。
以上是关于OI-STL 一本通的主要内容,如果未能解决你的问题,请参考以下文章