标签:迭代 收集 包含 单位 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