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类型一定要有默认构造函数。

posted @ 2023-03-08 14:23  hellozhangjz  阅读(44)  评论(0)    收藏  举报