d******i 发帖数: 7160 | 1 定义了个优先队列priority_queue, cmp2> pq;
cmp2的格式只能是这样:
class cmp2
{
public:
bool operator()(PI p1, PI p2)
{...
}
}
这样往队列里插入删除没问题了。
可是比较PI元素做比较时居然不work: if(pi
好像用来定义优先队列的比较器没法单独作用在元素比较上。
有没简单的办法让比较也take这个同样的比较器?
谢谢! | p***o 发帖数: 1252 | 2 你要能动PI就可以在PI里定义operator<, cmp2直接用std::less或者std::greater就好。
不能动就再传个cmp2把。
【在 d******i 的大作中提到】 : 定义了个优先队列priority_queue, cmp2> pq; : cmp2的格式只能是这样: : class cmp2 : { : public: : bool operator()(PI p1, PI p2) : {... : } : } : 这样往队列里插入删除没问题了。
| d******i 发帖数: 7160 | 3 呵呵,对的,过了!
谢了啊。
不过不能动PI的话,把cmp2穿给谁呢?
好。
【在 p***o 的大作中提到】 : 你要能动PI就可以在PI里定义operator<, cmp2直接用std::less或者std::greater就好。 : 不能动就再传个cmp2把。
| d******i 发帖数: 7160 | 4 试了,
PI5里定义的<没法作用到
这里的less
priority_queue,less> pq;
必须还要额外定义那个class cmp2传进来啊。 |
|