队列queue

  队列queue也是一种线性结构,我们可以再其两端进行操作,它是一种属于先进先出的结构(FIFO)。

  数据在只能在队尾进入,且只能在队首出去。

  队列与栈差不多,基本操作如下:

  1.queue::size()

  2.queue::empty()

  3.queue::push(typename t)

  4.queue::pop()     删除队首元素

  5.queue::front()    访问队首元素

  6.queue::back()      访问队尾元素

 1 #include<IOSTREAM>
 2 #include<QUEUE>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     queue<int> a;
 9     int i;
10     for(i=0;i<5;i++)
11     {
12         a.push(i);
13     }
14     cout<<a.size()<<endl;
15     cout<<a.front()<<endl;
16     cout<<a.back()<<endl;
17     a.pop();
18     cout<<a.size()<<endl;
19     cout<<a.front()<<endl;
20     cout<<a.back()<<endl;
21     if (a.empty())
22     {
23         cout<<"empty!\n";
24     }
25     else
26     {
27         cout<<"it has "<<a.size()<<" ge yuansu!\n";
28     }
29     return 0;
30 }

  在<queue>中还定义了一另一个非常有用的模板类priority_queue(优先队列),(我还用到过。。。。)优先队列不是按照入队的顺序出列,而是按照队列中元素的优先权顺序出队。(默认大者优先,也可以指定自己的算子来改变优先顺序)  

  priority_queue模板类有3个参数,第一个是元素类型,第二个是容器类型,第三个是比较算子。后2个参数可以省略,默认容器是vector,默认算子是less,即小的往前排,大的往后排,出队时队尾的元素出队。

  

 1 #include <IOSTREAM>
 2 #include <QUEUE>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     priority_queue<int,vector<int>,less<int> > a;
 9     a.push(1);
10     a.push(18);
11     a.push(16);
12     a.push(31);
13     if (a.empty())
14     {
15         cout<<"empty!\n";
16     }
17     cout<<a.size()<<endl;
18     for(int i=0;i<4;i++)
19     {
20         cout<<a.top()<<endl;
21         a.pop();
22     }
23     if (a.empty())
24     {
25         cout<<"empty!\n";
26     }
27     return 0;
28 }

 

posted on 2014-07-05 12:55  再见猪小华  阅读(269)  评论(0编辑  收藏  举报

导航