是否可以将 priority_queue
与默认容器类型一起使用,但使用自定义比较器?
换句话说,我如何避免在此处指定 vector
?
auto cmp = [](int a, int b){ return a > b; };
priority_queue<int, vector<int>, decltype(cmp)> my_queue(cmp);
最佳答案
你不能。这与函数参数默认值相同,您必须在能够指定参数 b
之前指定参数 a
,即使两者都有默认值并且您希望保留 a
作为默认值,例如:
void foo(int a = 5, int b = 42);
你可以创建一个帮助程序来创建这样一个队列,但最后你仍然必须指定第二个参数,即使你只想要默认值也是如此。
类似于:
template <typename T, typename Comp>
using default_priority_queue = std::priority_queue<T, std::vector<T>, Comp>;
关于c++ - 使用默认容器,但在 priority_queue 中使用自定义比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58308284/