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)\) 。

浙公网安备 33010602011771号