#include <iostream>
#include <iterator>
#include <queue>
using namespace std;
int main()
{
vector<char> a(256);
copy(istream_iterator<char>{ cin }, istream_iterator<char>{}, begin(a));
priority_queue<char> q{ less<char> (),a }; // less -> greater = compile error
while (!q.empty()) {
cout << q.top();
q.pop();
}
}
我正在尝试练习priority_queue。我无法使用greater<char>()
而不是less
为什么我不能?
最佳答案
问题是,给定 priority_queue<char> q ...
,比较类型将是 default template argument ,即std::less<char>
,如果您传递 greater<char>
则不匹配作为构造函数参数。
您可以将所有模板参数显式指定为
priority_queue<char, vector<char>, greater<char>> q{ greater<char> (),a };
或者不指定任何模板参数来利用 class template argument deduction (自 C++17 起)。
priority_queue q{ greater<char> (),a };
关于c++ - 在priority_queue中使用greater<char>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66863931/