目前我正在尝试实施此解决方案: https://stackoverflow.com/a/29236236/8882282 当我使用较少的<>()时,我没有任何问题,但在其他任何情况下都有很多(更多,我自己的比较器)。 例如:
std::vector<long long int> container;
container.reserve(dimension);
std::priority_queue<long long int, std::vector<long long int>> queue(std::greater<long long int>(), std::move(container));
&#34;没有匹配的构造函数&#34;
答案 0 :(得分:2)
std::priority_queue
的默认比较器为std::less
。您将std::greater
比较器传递给构造函数。
他们是不同的,完全无关的课程。那是你的错误。
您必须明确声明您的优先级队列:
std::priority_queue<long long int,
std::vector<long long int>,
std::greater<long long int>>
queue(std::greater<long long int>(),
std::move(container));