#include <algorithm>

algorithm

\(algorithm\)头文件里面包含了很多十分实用的函数,至少于我而言,这是我用的最多的\(stl\)。由于所有对区间进行操作的函数都遵循左闭右开的原则,所以假设操作区间为[l,r],那么写在函数里的应该是[l,r+1]。

reverse

翻转一个\(vector\)\(reverse(vector.begin(),vector.end())\)

翻转一个数组:\(reverse(a+1,a+n+1)\)

random_shuffle

随机打乱,用法与\(reverse\)相同。

next_permutation

把操作区间看做一个排列,这个函数就会求比该区间的排列的字典序大的排列的最小的那一个,并且直接在元区间上修改。如果没有下一个了会返回\(false\),否则会返回\(true\),同理也有\(prev\)_\(permutation\)函数。时间复杂度为\(O(n)\)

sort

快速排序一个数组:\(sort(a+1,a+n+1)\)。时间复杂度为\(O(nlogn)\)

lower_bound/upper_bound

\(lower\)_\(bound\)(\(a+1,a+n+1,x\))表示在\(a\)数组里找大于等于\(x\)的数里最小的那个。

\(upper\)_\(bound\)(\(a+1,a+n+1,x\))表示在\(a\)数组里找大于\(x\)的数里最小的那个。

返回的是位置的迭代器,内部实现为二分查找,所以查找区间应该提前排好序,时间复杂度为\(O(nlogn)\)

unique

去重函数。返回去重之后的尾迭代器,左闭右开,所以最后一个值是在尾迭代器\(-1\)的位置上。也需要操作区间提前排好序,时间复杂度为\(O(n)\)

转载于:https://www.cnblogs.com/AKMer/p/9894669.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值