我不明白为什么我在C ++和Java中获得类似代码的不同结果。可能是我在某处做错了什么。我实际上想在C ++中使用自定义比较器实现优先级队列,就像在Java中实现的那样。
Java中的代码
pq: [1, 3, 5, 8, 4, 7, 6, 10, 9]
输出
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
struct comp
{
bool operator()(const int a, const int b) const
{
return b < a;
}
};
int main()
{
priority_queue<int, vector<int>, comp> pq;
int ia[] = { 1, 10, 5, 3, 4, 7, 6, 9, 8 };
for (int i=0;i<9;i++)
{
pq.push(ia[i]);
}
while (!pq.empty())
{
std::cout << ' ' << pq.top();
pq.pop();
}
return 0;
}
C ++中的代码
1 3 4 5 6 7 8 9 10
输出
{{1}}