C++自定义比较函数的bug
auto cmp = [] (int x, int y) {return true;};
priority_queue<int, vector<int> , cmp> q;
报错第三个参数失配,需要一个类型,而不是对象。平时用sort直接传cmp习惯了,才发现这类模板尖括号内要传类型,包括set和map。
auto cmp = [] (int x, int y) {return true;};
priority_queue<int, vector<int> , decltype(cmp)> q;
又报错,匿名函数没有默认构造函数,要手动传入对象。
auto cmp = [] (int x, int y) {return true;};
priority_queue<int, vector<int> , decltype(cmp)> q(cmp);
priority_queue, set, map的comp类型一定要有默认构造函数。

浙公网安备 33010602011771号