《STL源码分析》中如何priority_queue使用greater函数对象?

2025-01-31 01:20:27
推荐回答(3个)
回答1:

首先查看手册,priority_queue的定义如下:

template, class Compare = std::less> class priority_queue;

然后继续看模板的三个参数的说明

—————————以下直接摘抄的—————

Template parameters

T    -    The type of the stored elements. The behavior is undefined if T is not the same type asContainer::value_type. (since C++17)    

Container    -    The type of the underlying container to use to store the elements. The container must satisfy the requirements of SequenceContainer, and its iterators must satisfy the requirements of LegacyRandomAccessIterator. Additionally, it must provide the following functions with the usual semantics:

  • front()

  • push_back()

  • pop_back()

  • The standard containers std::vector and std::deque satisfy these requirements.

Compare    -    A Compare type providing a strict weak ordering.    

—————————以上直接摘抄的—————

故可知,使用priority_queue需要给三个类来实现模板,其中第三个类就是那个比较函数,你问的,为什么要priority_queue, greater > q1;已经回答完毕。

另外,可以参考std::less的定义,更深入学习第三个类的含义。已附在引用部分,自行查阅。


std::priority_queue std::less

PS:第一个那家伙回答的什么东西!我本来是不想回答的。。。看见那家伙胡诌一气,气不过。

回答2:

将 1 - 10 分别输入 A1-A10单元格 B1输入公式 =sum(a1:a10) 就得到1-10的和了

回答3:

《STL源码分析》,这本书是哪一种编程语言的