OVSolitario-io

导航

algorithm函数

sort with lambda
对于sort自定义顺序需要手写比较函数,但其可以本身作为参数出现

sort(a, a + n, [](int a, int b) {//lambda表达式
  return a > b;
});//即可将a从大到小排序

但这样只能使用括号中的参数,若用b[a[i]]<b[a[j]]则报错

此时解决办法是[]中&,使得上下文找到对应的值(用到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同理

posted on 2025-08-28 09:22  TBeauty  阅读(5)  评论(0)    收藏  举报