algorithm函数
sort with lambda:
对于sort自定义顺序需要手写比较函数,但其可以本身作为参数出现
sort(a, a + n, [](int a, int b) {//lambda表达式
return a > b;
});//即可将a从大到小排序
此时解决办法是[]中&,使得上下文找到对应的值(用到sort前后变量,[]中要加&),否则只能使用参数列表中变量
b[] = {2, 3, 1};
sort(a, a + n, [&](int x, int y) {
return b[x] > b[y];
});
max/min_element(): 取范围内最大/最小
不用for一遍,复杂度O(n)无区别
a[] = {1, 2, 3, 4};
max_element(a, a + 5);//返回最大值,min同理
nth_element(): O(n)找第k小数
nth_element(a, a + 5, a + 3);第一个为头指针,第二个为尾指针,第三个是第n小的指针
第一个指针a,a+3即找第4小的数,即会将整个序列第4小的数放到a+3这个位置上去,然后将比这个数小的数放到它左边,比它大的数放到右边
但其并非排序函数,仅将比其小数放到左边,大放在右边,不保证左右顺序,仅能保证a+3一定为第4小
可能为3 2 3 【4】8 6 5 不确定
next_permutation(): 取范围内all排列方案,全排列
a[5] = {1, 2, 3, 4, 5};
do {
for(auto i : a) {
cout << i << ' ';
}
cout << endl;
}while(next_permutation(a, a + 5));
.reverse():翻转
unique:(离散化内容)
max/min
大括号取最大/小值
max({x, y, z, ···});//找all数的最大值,min同理
浙公网安备 33010602011771号