为什么我们需要在优先级队列声明中添加一个向量作为参数?

卡兰·辛格(Karan Singh)

每当我想使用优先级队列创建最小堆(默认情况下会创建一个最大堆)时,我都需要传递一个比较器以及要排序的所需类型的向量,如下所示:

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

我们为什么要做这个?为什么对于max-heap实现,我们不必如此?

逻辑资料

由于模板参数的位置和C ++标准提交人决定在比较器类型之前对容器类型进行排序。

就像这样的函数:

void foo(int a = 1, int b = 2);

-您不能将其称为指定b,但不能指定a

对于max-heap,您正在使用std::less<int>,它恰好是默认值,因此也可以省略容器类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我们无法区分它们,为什么 Vulkan 中队列家族中的队列需要优先级?

来自分类Dev

为什么我们需要在React Hook中返回一个函数?

来自分类Dev

为什么我们需要在堆中创建一个对象?

来自分类Dev

为什么我们需要在另一个队列上使用dispatch_sync()而不是在iOS GCD中使用当前队列/线程

来自分类Dev

我们真的需要在Johnson算法中添加一个额外的节点吗?

来自分类Dev

graphql 为什么我需要在解析器参数中声明一个额外的参数

来自分类Dev

为什么我们需要首先创建一个表,然后将其作为R中饼图的参数传递?

来自分类Java

为什么对于equals方法我们需要一个Object参数?

来自分类Dev

为什么我们需要在我们的分叉存储库中创建一个分支来推送我们的更改,然后向上游存储库创建拉取请求?

来自分类Dev

斯威夫特:我们需要在使用变量之前声明一个变量吗?

来自分类Dev

为什么我们需要在实体中声明非空构造函数?

来自分类Dev

为什么我们需要在运行时实例化一个类型?

来自分类Dev

当我们创建一个新进程时,在Linux内核中的优先级分配在哪里?

来自分类Dev

为什么我们需要一个接口来定义aem中的每个服务?

来自分类Dev

为什么我们需要声明一个属性以便将外键属性放入相同的名称?

来自分类Dev

为什么我们需要在哈希导航URL中添加标记?

来自分类Java

一旦我不在函数中,优先级队列中的值就会被删除,为什么?

来自分类Dev

为什么我们需要一个“MultiRepositoryProvider”和一个单独的“MultiBlocProvider”?

来自分类Dev

为什么我们需要在函数中的第二个参数之后初始化参数参数?

来自分类Dev

为什么我们需要在“简单声明”中使用下面的第二个定义?

来自分类Dev

为什么我们需要在使用打字稿选择元素之前添加元素参数

来自分类Dev

当我们有一个红色区域时,为什么我们需要堆栈分配?

来自分类Dev

为什么我们不能声明一个类型为void的变量?

来自分类Dev

为什么我们不能声明一个映射并在const之后填充它?

来自分类Dev

为什么我们必须在代码的顶部声明一个包?

来自分类Dev

Scala中是否维护了一个不变的优先级队列?

来自分类Dev

为什么我们必须在onClick方法中添加“视图”作为参数及其作用?

来自分类Dev

为什么我们需要两个接口来枚举一个集合?

来自分类Dev

使用更大和向量声明优先级队列

Related 相关文章

  1. 1

    如果我们无法区分它们,为什么 Vulkan 中队列家族中的队列需要优先级?

  2. 2

    为什么我们需要在React Hook中返回一个函数?

  3. 3

    为什么我们需要在堆中创建一个对象?

  4. 4

    为什么我们需要在另一个队列上使用dispatch_sync()而不是在iOS GCD中使用当前队列/线程

  5. 5

    我们真的需要在Johnson算法中添加一个额外的节点吗?

  6. 6

    graphql 为什么我需要在解析器参数中声明一个额外的参数

  7. 7

    为什么我们需要首先创建一个表,然后将其作为R中饼图的参数传递?

  8. 8

    为什么对于equals方法我们需要一个Object参数?

  9. 9

    为什么我们需要在我们的分叉存储库中创建一个分支来推送我们的更改,然后向上游存储库创建拉取请求?

  10. 10

    斯威夫特:我们需要在使用变量之前声明一个变量吗?

  11. 11

    为什么我们需要在实体中声明非空构造函数?

  12. 12

    为什么我们需要在运行时实例化一个类型?

  13. 13

    当我们创建一个新进程时,在Linux内核中的优先级分配在哪里?

  14. 14

    为什么我们需要一个接口来定义aem中的每个服务?

  15. 15

    为什么我们需要声明一个属性以便将外键属性放入相同的名称?

  16. 16

    为什么我们需要在哈希导航URL中添加标记?

  17. 17

    一旦我不在函数中,优先级队列中的值就会被删除,为什么?

  18. 18

    为什么我们需要一个“MultiRepositoryProvider”和一个单独的“MultiBlocProvider”?

  19. 19

    为什么我们需要在函数中的第二个参数之后初始化参数参数?

  20. 20

    为什么我们需要在“简单声明”中使用下面的第二个定义?

  21. 21

    为什么我们需要在使用打字稿选择元素之前添加元素参数

  22. 22

    当我们有一个红色区域时,为什么我们需要堆栈分配?

  23. 23

    为什么我们不能声明一个类型为void的变量?

  24. 24

    为什么我们不能声明一个映射并在const之后填充它?

  25. 25

    为什么我们必须在代码的顶部声明一个包?

  26. 26

    Scala中是否维护了一个不变的优先级队列?

  27. 27

    为什么我们必须在onClick方法中添加“视图”作为参数及其作用?

  28. 28

    为什么我们需要两个接口来枚举一个集合?

  29. 29

    使用更大和向量声明优先级队列

热门标签

归档