标签:迭代 收集 包含 单位 middle filename tor 源文件 code
收录了一些较为实用的 STL,并进行了简单描述,供大佬们参考。
如果发现有错误,欢迎在评论区指出。
同时欢迎各位进行添加。
assert (expr);
assert
是一个宏,当表达式 expr
的值为 0
时,程序会被终止(RE),然后你会得到一个消息,包含这个表达式的内容,表达式所在行号及源文件名:Assertion failed: expression, file filename, line line number
常用于:调试。头文件:<cassert>
。
nth_element(first, nth, last);
重新排列区间 [first, last)
,使得位置 nth
的值等于该区间排序后该位置的值。即,执行后 [first, nth)
中所有元素的值小于等于 nth
,(nth, last)
中所有元素的值大于等于 nth
。可以在最后加上比较函数 comp
。期望复杂度为线性。
常用于:K-D Tree 的建树。头文件:<algorithm>
。
merge(first1, last1, first2, last2, result);
合并两个已经排好序的区间 [first1, last1), [first2, last2)
至 result
(新区间将 result
作为首迭代器),并返回合并后的尾迭代器。合并后新区间仍然有序。可以在最后加上比较函数 comp
。注意若 [result, 返回值)
于两个区间相交可能会出错。时空复杂度线性。
常用于:归并排序,分治。头文件:<algorithm>
。
inplace_merge(first, middle, last);
合并两个相邻的有序区间 [first1, last1), [first2, last2)
至 [first, last)
。效果与 merge
函数类似。可以在最后加上比较函数 comp
。若有可以额外使用的内存,那么时空复杂度为线性;反之空间消耗为常数,但时间为线性对数复杂度。
常用于:归并排序,分治。头文件:<algorithm>
。
accumulate(first, last, init, op);
在 init
的基础上,对区间 [first,last)
以 op
的运算方式进行累计。参数 op
没有时则默认为 +
运算符。复杂度线性。
常用于:偷懒。头文件:<numeric>
。
iota(first, last, val);
对区间 [first, last)
赋值,从 first
开始,每次将 val
赋值为当前位置,然后执行 ++val
。复杂度线性。
常用于:偷懒。头文件:<numeric>
。
partial_sum(first, last, result);
对区间 [first, last)
计算前缀和,结果存入 result
。当然也可以在参数后加上 op
,代替加法做前缀运算。复杂度线性。
常用于:偷懒。头文件:<numeric>
。
prev(it, n = 1);
返回迭代器 it
向前 n
(默认为 1
)个单位的结果。如果是随机访问迭代器那么会直接使用 -
运算符,复杂度为常数;
否则使用 n
次 --
运算符,复杂度线性。
常用于:偷懒。头文件:<iterator>
。
next(it, n = 1);
返回迭代器 it
向后 n
(默认为 1
)个单位的结果。如果是随机访问迭代器那么会直接使用 +
运算符,复杂度为常数;
否则使用 n
次 ++
运算符,复杂度线性。
常用于:偷懒。头文件:<iterator>
。
标签:迭代 收集 包含 单位 middle filename tor 源文件 code
原文地址:https://www.cnblogs.com/-Wallace-/p/13680960.html