【发布时间】:2015-04-01 06:49:24
【问题描述】:
在创建 STL priority_queue 时,第三个参数(决定如何比较队列中的元素以决定哪个最大的参数)必须是定义函数运算符的类。如果可以提供 lambda 表达式会更方便。为什么不允许这样做?如果 lambda 表达式没有捕获任何变量,它应该被认为是编译时常量,对吧?
struct compare{
bool operator()(int p, int q){return p > q;}
};
priority_queue< int, vector<int>, compare> intpq;
priority_queue< int, vector<int>,
[](int p, int q){return p > q;}
> intpq2;
第二个定义,即 intpq2,给出错误:模板参数 3 无效。接受第二个定义是否存在根本问题,或者只是priority_queue的设计者选择不允许它?
【问题讨论】:
标签: c++ stl priority-queue