欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > C++ STL容器:序列式容器-堆pirority_queue

C++ STL容器:序列式容器-堆pirority_queue

2026/6/3 5:56:40 来源:https://blog.csdn.net/weixin_45068267/article/details/140226393  浏览:    关键词:C++ STL容器:序列式容器-堆pirority_queue

摘要:

   CC++ STL(Standard Template Library,标准模板库)在C++编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C++程序的开发效率和代码质量。

STL 容器 分为 2 大类 , 分别是“序列式容器” 和“关联式容器 ”。

  • 序列式容器:每个元素都有固定位置,取决于插入时机和地点,其底层为线性序列的数据结构,里面存储的是元素本身。
  • 关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,其里面存储的是< key , value >结构的键值对,在数据检索时比序列式容器效率更高。

   本系列博文将详细介绍C++STL的各种容器的特性优缺点,以及其常用算法方法等。本文介绍的是序列式容器-堆pirority_queue。

(开发环境:VScode,C++17)

关键词C++STL数据存储数据类型堆栈pirority_queue

声明:本文作者原创,转载请附上文章出处与本文链接。

文章目录

      • 摘要:
      • 正文:
        • pirority_queue
          • 常用函数:
          • 使用例子:
      • 推荐阅读

正文:

pirority_queue

在C++标准模板库(STL)中,std::priority_queue 是一个容器适配器,它提供了队列的所有功能,但元素总是按照某种特定的优先级进行排序。默认情况下,元素的优先级基于其值的降序(即较大的元素具有更高的优先级,即大堆),或许会有人疑惑pirority_queue为什么对应堆,因为pirority_queue是优先级队列,而优先级队列既是堆,堆也分大堆和小堆(有需要更深入了解数据结构堆的,可看同专栏下数据结构分支)。

常用函数:
  • empty():检测容器是否为空。
  • size():返回容器中有效元素个数 。
  • front():返回容器中第一个元素的引用。
  • push_back():在容器尾部插入元素。
  • push(): 在优先队列中插入元素。
  • pop(): 删除并返回具有最高优先级的元素(即堆顶元素)。
  • top(): 返回具有最高优先级的元素(但不删除它)。
使用例子:
#include <iostream>
#include <queue>
using namespace std;int main() 
{priority_queue<int> pq;pq.push(3);pq.push(1);pq.push(4);while (!pq.empty()) {cout << pq.top() << ' ';  // 输出:4 3 1pq.pop();}return 0;  
}

   默认情况下,priority_queue是大堆(大的优先级高),那如果我们想使用小堆怎么做呢? 我们要多传一个参数,即对应第三个模板参数。

std::priority_queue<int> pq;  
// ==》 最小堆
std::priority_queue<int, vector<int>, greater<int>> pq_min; 

推荐阅读

博客主页:https://blog.csdn.net/weixin_45068267
(客官逛一逛,有许多其它有趣的专栏博文)

C/C++专栏:https://blog.csdn.net/weixin_45068267/category_12268204.html
(内含其它STL容器使用及对应的数据结构实现)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词