21xrx.com
2024-11-22 07:08:47 Friday
登录
文章检索 我的文章 写文章
C++实现优先队列
2023-07-02 07:27:41 深夜i     --     --
C++编程语言 优先队列 实现 数据结构 STL库

优先队列是一种特殊的队列,其中元素的顺序不是按照它们被加入队列的顺序排序,而是按照它们的优先级排序。在优先队列中,具有最高优先级的元素始终位于队列的前面。

C++中,实现优先队列的最简单方法是使用STL库中的priority_queue类。该类是一个模板类,因此可以定义任何类型的元素,并针对某种比较规则确定优先级。priority_queue的模板声明如下所示:

template ,

      class Compare = less >

class priority_queue;

其中T是元素的类型,Container是存储元素的容器类型,默认是vector。Compare是比较元素优先级的函数对象类型,默认是less ,即按照元素类型T的“小于”运算符排序。

使用priority_queue很简单。以下是一个将字符串按照长度排序的例子:


#include <iostream>

#include <queue>

#include <string>

using namespace std;

int main() {

  priority_queue<string,vector<string>,greater<string>> pq;

  pq.push("Hello");

  pq.push("World");

  pq.push("C++");

  while (!pq.empty()) {

    cout << pq.top() << endl;

    pq.pop();

  }

  return 0;

}

在上面的代码中,我们首先定义了一个priority_queue对象pq,它存储string类型的元素,并使用greater 函数对象将元素按照字符串长度从小到大排序。然后,我们向队列中依次加入三个字符串,并在每次加入后输出队列的顶部元素,即具有最高优先级的元素。最后,我们将队列中的所有元素都弹出,并返回0表示程序正常结束。

通过使用priority_queue,我们可以快速实现优先队列的功能,而不必自己去实现一个堆数据结构。无论您是编写算法还是构建各种系统,使用STL库中的容器和算法可以大大提高开发效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复