如何为优先级队列预分配内存?

时间:2018-05-06 12:33:41

标签: c++ constructor stl comparator priority-queue

目前我正在尝试实施此解决方案: 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;

你有什么想法吗?

1 个答案:

答案 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));