初学者·面试中的lambda(为prioriy_queue和sort写compare)

这里贴下代码:

void helper() {
  auto compare = [](int a, int b) {
    return a < b;
  };
  vector<int> A = { 2, 3, 5, 6, 9, 1, 20 };
  priority_queue<int, vector<int>, decltype(compare)> pq(compare, A);
  sort(A.begin(), A.end(), compare);
  for (auto& i : A) {
    cout << i << " ";
  }
  cout << endl;
  while (!pq.empty()) {
    int x = pq.top();
    pq.pop();
    cout << x << " ";
  }
  cout << endl;
}

运行结果是:

1 2 3 5 6 9 20
20 9 6 5 3 2 1

 

也就是说,对于sort, a < b如果为true,那么就是升序;对于priority_queue, a < b如果为true,那么就是降序;(具体为什么就先不管了吧,肯定是定义的问题)

对于lambda的写法标黄了,基本是:

auto compare = [会用到的变量](传入的参数){函数体};

priority_queue<类型, vector<类型>, greater<类型>> pq;

priority_queue<类型, vector<类型>, decltype(lambda函数)> pq(lambda函数, 可以写上某个vector);

 

上一篇:「题解」Codeforces 1542D Priority Queue


下一篇:Windows内核驱动--实现修改线程优先级demo