21xrx.com
2024-12-22 23:25:01 Sunday
登录
文章检索 我的文章 写文章
C++实现优先队列的使用方法
2023-07-02 16:12:17 深夜i     --     --
C++ 优先队列 实现 使用方法 数据结构

优先队列是一种数据结构,它根据元素的优先级来决定哪个元素会被先处理而不是先进先出。在C++中,可以使用STL提供的priority_queue类来实现优先队列。

首先,要使用优先队列,需要包含头文件

其次,需要定义一个元素类型以及对应的比较函数。元素类型可以是任何类型,只要能够比较大小即可。比较函数可以是自定义的函数或重载运算符“<”,“>”。

比如定义一个结构体Person和对应的比较函数:


struct Person

  string name;

  int age;

;

struct cmpPerson {

  bool operator() (Person a, Person b)

    return a.age > b.age;//按age从小到大排序

  

};

然后就可以创建一个优先队列的实例了,如下所示:


priority_queue<Person,vector<Person>,cmpPerson> pq;

第一个参数为元素类型,这里是Person;第二个参数为底层数据结构类型,这里为vector ;第三个参数为比较函数类型,这里为cmpPerson。

接下来,就可以添加元素到优先队列里了,使用push()函数,如下所示:


Person p1 = 20;

pq.push(p1);

Person p2 = "Mary";

pq.push(p2);

Person p3 = "John";

pq.push(p3);

最后,可以使用top()函数获取优先级最高的元素,并使用pop()函数弹出该元素,如下所示:


Person p = pq.top();

cout <<"Name: "<<p.name<<" Age: "<<p.age<<endl;

pq.pop();

Person p = pq.top();

cout <<"Name: "<<p.name<<" Age: "<<p.age<<endl;

pq.pop();

即可得到输出结果:


Name: Mary Age: 18

Name: Tom Age: 20

使用C++实现优先队列,可以方便地实现按优先级处理元素的功能,并且STL提供的priority_queue类封装了各种操作,使用起来非常方便。

  
  

评论区

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