实用但可能鲜为人知的 C++ STL 整理(持续收集中…)

时间:2020-09-18 03:24:40   收藏:0   阅读:45

收录了一些较为实用的 STL,并进行了简单描述,供大佬们参考。

如果发现有错误,欢迎在评论区指出。

同时欢迎各位进行添加。

assert 是一个宏,当表达式 expr 的值为 0 时,程序会被终止(RE),然后你会得到一个消息,包含这个表达式的内容,表达式所在行号及源文件名:Assertion failed: expression, file filename, line line number

常用于:调试。头文件:<cassert>

重新排列区间 [first, last) ,使得位置 nth 的值等于该区间排序后该位置的值。即,执行后 [first, nth) 中所有元素的值小于等于 nth(nth, last) 中所有元素的值大于等于 nth。可以在最后加上比较函数 comp。期望复杂度为线性。

常用于:K-D Tree 的建树。头文件:<algorithm>

合并两个已经排好序的区间 [first1, last1), [first2, last2)result(新区间将 result 作为首迭代器),并返回合并后的尾迭代器。合并后新区间仍然有序。可以在最后加上比较函数 comp。注意若 [result, 返回值) 于两个区间相交可能会出错。时空复杂度线性。

常用于:归并排序,分治。头文件:<algorithm>

合并两个相邻的有序区间 [first1, last1), [first2, last2)[first, last)。效果与 merge 函数类似。可以在最后加上比较函数 comp。若有可以额外使用的内存,那么时空复杂度为线性;反之空间消耗为常数,但时间为线性对数复杂度。

常用于:归并排序,分治。头文件:<algorithm>

init 的基础上,对区间 [first,last)op 的运算方式进行累计。参数 op没有时则默认为 + 运算符。复杂度线性。

常用于:偷懒。头文件:<numeric>

对区间 [first, last) 赋值,从 first 开始,每次将 val 赋值为当前位置,然后执行 ++val。复杂度线性。

常用于:偷懒。头文件:<numeric>

对区间 [first, last) 计算前缀和,结果存入 result。当然也可以在参数后加上 op,代替加法做前缀运算。复杂度线性。

常用于:偷懒。头文件:<numeric>

返回迭代器 it 向前 n(默认为 1)个单位的结果。如果是随机访问迭代器那么会直接使用 - 运算符,复杂度为常数;

否则使用 n-- 运算符,复杂度线性。

常用于:偷懒。头文件:<iterator>

返回迭代器 it 向后 n(默认为 1)个单位的结果。如果是随机访问迭代器那么会直接使用 + 运算符,复杂度为常数;

否则使用 n++ 运算符,复杂度线性。

常用于:偷懒。头文件:<iterator>

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!