Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在stl中队列有前端,而优先级队列有顶部?_C++_Stl_Queue_Priority Queue - Fatal编程技术网

C++ 为什么在stl中队列有前端,而优先级队列有顶部?

C++ 为什么在stl中队列有前端,而优先级队列有顶部?,c++,stl,queue,priority-queue,C++,Stl,Queue,Priority Queue,这两个都是容器适配器,都在标题中定义,但它们都有不同的接口来访问“first”元素。我可以理解,由于数据结构的限制,缺少后,但命名前会让我感到困惑。优先级队列容器适配器是标准库堆算法的方便包装器,使用序列容器作为经典二进制堆。名称top可能反映了这种关联;我们谈到堆的“顶部”,因为我们将其视为一个按堆排序的二叉树,其中最优先的元素位于根(顶部)。是的,这就是重点 这是两个不同的适配器。它们“调整”底层容器以具有特定接口。这两个类“定义”了可供算法使用的接口 为什么用这个术语 一个队列有一个前面

这两个都是容器适配器,都在标题
中定义,但它们都有不同的接口来访问“first”元素。我可以理解,由于数据结构的限制,缺少
,但命名
会让我感到困惑。

优先级队列容器适配器是标准库堆算法的方便包装器,使用序列容器作为经典二进制堆。名称
top
可能反映了这种关联;我们谈到堆的“顶部”,因为我们将其视为一个按堆排序的二叉树,其中最优先的元素位于根(顶部)。

是的,这就是重点

这是两个不同的适配器。它们“调整”底层容器以具有特定接口。这两个类“定义”了可供算法使用的接口

为什么用这个术语

  • 一个队列有一个
    前面
    后面
  • 不需要队列优先级来获得优先级最低的元素;它只有最优先的元素。所以我想你们可以有一个
    前端
    ,但可能要区别于他们选择的
    顶部
    。它可能与实现有关(因为它几乎肯定是封底下的一个堆,上面有一个
    顶部

可能是因为,在英语中,您可以位于队列的最前面,也可以是最高优先级,但您不能位于队列的最前面或最前面优先级。可能只是因为这些数据结构虽然名称相似,但对于同一操作有不同的既定术语。例如,比较wikipedia:使用“front”而使用“top”。“为什么术语不同”是一个关于词源的问题,而不是API设计的问题。@user2079303不一定,名称是API设计的基本部分,我觉得命名的一致性也很重要。如果它们的名称不同,那么它们的名称应该有所不同function@AnkurS在我看来,API命名和常用术语之间的一致性比即使在同一个API中不同类型命名之间的一致性更重要。但我们在常用术语方面并不一致,例如“top”堆的根通常称为堆的根,例如