每当我想要使用优先级队列创建一个min-heap (默认情况下创建一个max-heap )时,我需要传递一个比较器和一个需要排序的类型的向量,如下所示:
std::priority_queue<int, std::vector<int>, std::greater<int> > pq;我们为什么要这样做?为什么我们不必对max-heap实现进行同样的操作呢?
发布于 2018-08-14 02:58:40
因为模板参数是位置的,并且C++标准委员会决定将容器类型排在比较器类型之前。
就像下面这样的函数:
void foo(int a = 1, int b = 2);您不能指定b来调用它,但不能指定a。
对于max-heap,您使用的是std::less<int>,这恰好是默认的,因此您也可以省略容器类型。
https://stackoverflow.com/questions/51828816
复制相似问题