C++STL优先队列小结

来源:互联网 发布:淘宝店招装修 编辑:程序博客网 时间:2024/05/21 21:40

在C++的标准库中优先队列默认优先级是参数值大的优先级高

(1)一般定义:

priority_queue<数据类型> 优先队列名;

当然有些时候我们需要优先级是从小到大的

(2)自定义优先级

1、

priority_queue<数据类型 ,vector<数据类型>, greater<数据类型> > 优先队列名;

这里再定义时传入了一个函数greater<>;这样定义后其优先级就是按参数从小到大的顺序。

2、

struct node 

{

   int p;

   int value;

   friend bool operator <(node a,node b)  //自定义优先级

   {

        return a.value>b.value;

   } 

}

priority_queue<node> Q;

这样定义的优先队列也是按参数从小到大的的优先级定义的.

3、当结构体类型里既有整形成员变量又有字符型成员变量,且优先级是按当整形成员值不等时,按整形成员值从小到大的优先级,相等时,按字符成员的字典序的优先级时.

其定义如下:

struct node

{

     int value;

    char name[20];

    bool operator < (const node & a) const

     {

            if(value != a.value)

                return value>a.value;

           else

                return (strcmp(name,a.name)<0);

     }

};

priority_queue<node>q;


0 0
原创粉丝点击