首页 > 解决方案 > 仅当我们在优先级队列中使用自定义比较器时才需要传递容器类型?

问题描述

我的朋友在一次采访中被问到:

"当我们使用默认排序创建优先级队列时std::less<T>,我们可以只写:

std::priority_queue<int> q;

但是当我们使用自定义比较器创建一个时,例如std::greater<T>,我们必须改为:

std::priority_queue<int, std::vector, std::greater > q2;

std::vector<int>在您看来,第二种情况需要指定容器类型是什么?而且,为什么只在第二种情况下?"

他只是被要求“猜测”,因为他不确定。当我听到它的那一刻,我意识到我之前曾在 SO 上问过它问题 2),但没有得到答复。

有人可以澄清原因是什么吗?

注意:从cppreference.com复制的声明。

标签: c++priority-queue

解决方案


推荐阅读