优先队列

优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~
百度百科上这样描述的:
  优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素
  优先队列的类定义  
  优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操作有1) 查找;2) 插入一个新元素;3) 删除.在最小优先队列(min priorityq u e u e)中,查找操作用来搜索优先权最小的元素,删除操作用来删除该元素;对于最大优先队列(max priority queue),查找操作用来搜索优先权最大的元素,删除操作用来删除该元素.优先权队列中的元素可以有相同的优先权,查找与删除操作可根据任意优先权进行. 
优先队列,其构造及具体实现我们可以先不用深究,我们现在只需要了解其特性,及在做题中的用法,相信,看过之后你会收获不少。
使用优先队列,首先要包函STL头文件"queue",
代码实现:
#include<queue>
#include<cstdio>
using namespace std;

int date[5];

int main()
{
    priority_queue<int> Q; //默认为最大值优先
    priority_queue<int,vector<int>,greater<int> > Q1; //最小值优先
    priority_queue<int,vector<int>,less<int> > Q2; //最大值优先

    for(int i=1;i<=3;i++)
    {
        scanf("%d",&date[i]);
        Q.push(date[i]); //插入元素
    }


    while(!Q.empty())
    {
        int x = Q.top(); //读取队头元素
        Q.pop(); //弹出元素
        printf("%d\n",x);
    }

    return 0;
}
View Code

 



 

posted @ 2017-03-29 15:01  声声醉如兰  阅读(173)  评论(0编辑  收藏  举报