【发布时间】:2017-01-16 07:54:06
【问题描述】:
template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue;
我理解前两个模板参数,第一个模板参数是存储在优先级队列中的元素的数据类型,第二个是程序员想要使用的容器类型,它可以是 deque 或向量。
但第三个论点让我有点困惑,因为我从未见过类似的东西。我会做类似的事情:
template <class T, class Container = vector<T>
class priority_queue{
/* Implementation */
};
这是否与优先级队列所需的严格的弱排序标准有关?如果是,我怎样才能了解更多信息?你能举一个使用第三个参数的例子吗?
我是模板编程的新手,非常感谢您的帮助。
【问题讨论】:
-
它指定了你想如何比较队列中的东西,以确定它们的优先级。默认情况下,它将使用 std::less。
-
第一个、第二个和第三个参数本质上是一样的——你到底有什么不明白的?由于您显然已经搜索过 bing.com/search?q=c%2B%2B+priority_queue+what+is+compare+for 之类的内容,因此您已经看到了用法示例 - 不知道您为什么在帖子中要求它...
-
@Alexei 怎么一样?
-
@latedeveloper 问题(见标题)主要是关于阅读签名 - 所以第二个和第三个参数的格式相同 -
class c = type<other_type>。我假设 OP 已经阅读了文档并且知道Compare的用途...