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 一本通的主要内容,如果未能解决你的问题,请参考以下文章

信息学奥赛一本通为啥不通过

信息奥赛一本通 1060:均值

长春市哪里有卖这本信息学奥赛一本通c++的书店?

背包问题--(一本通)课后训练

一本通网站基础篇完结纪念

Loj一本通刷题记录