每当我想使用优先级队列(默认情况下创建一个max-heap)创建一个min-heap时,我需要传递一个比较器以及一个需要排序的类型的向量,如下所示:
std::priority_queue<int, std::vector<int>, std::greater<int> > pq;
Run Code Online (Sandbox Code Playgroud)
我们为什么要做这个?为什么我们不需要同样的最大堆实现?
由于模板参数是位置的,C++标准委员会决定在比较器类型之前对containter类型进行排序.
就像这样的函数:
void foo(int a = 1, int b = 2);
Run Code Online (Sandbox Code Playgroud)
- 你不能称之为指定b,但不是a.
对于max-heap,您正在使用std::less<int>,这恰好是默认值,因此您也可以省略容器类型.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |