STL容器之queue

来源:互联网 发布:淘宝服装店铺介绍 编辑:程序博客网 时间:2024/05/21 03:25

一,基本的成员函数

back()返回最后一个元素

empty()如果队列空则返回真

front()返回第一个元素

pop()删除第一个元素

push()在末尾加入一个元素

size()返回队列中元素的个数

二,queue 的基本操作举例如下:

1,queue入队,如例:q.push(x); 将x 接到队列的末端。

queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。

访问queue队首元素,如例:q.front(),即最早被压入队列的元素。

访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。

判断queue队列空,如例:q.empty(),当队列空时,返回true。

访问队列中的元素个数,如例:q.size()

2,队列使用数组:

#include<iostream>
      #include<queue>
     using namespace std;
    int main()
   {
       queue<int>q;
       int a[6];
       for(int i=0;i<5;i++)
            cin>>a[i];
       for(int i=0;i<5;i++)
           q.push(a[i]);
       for(int i=0;i<5;i++)
    {
        cout<<q.front()<<endl;
        q.pop();
    }
    return 0;
}

   


三,#include<queue>

queue<int>q;

结构体:struct node

          {

               int x,y;

          };

           queue<node>q;


四,优先队列

优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是优先队列中最大的元素总是位于队首,所以出队时,并非按照先进先出的原则,而是将当前队列中最大的元素出队。元素的比较规则则默认元素值由小到大排序,可以重新载“>”来重新定义比较规则。

基本操作:

empty() 如果队列为空返回真

pop() 删除队顶元素

push() 加入一个元素

size() 返回优先队列中拥有的元素个数

top() 返回优先队列队顶元素(队列中的front()变成了top())

在默认的优先队列中,优先级高的先出队。在默认的int型中先出队的为较大的数。


((1)第一种用法,这是最常用的默认用法,即优先级高的先出队列,例如一个int优先队列,那么出队的时候就是int大的先出队列
举例:

#include<iostream>

#include<queue>

using namespace std;

priority_queue<int>q;

for(int i=i;i<=5;i++)

{

  q.push(i);

}

for(int i=0;i<5;i++)

{

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

q.pop();

return 0;

}//结果输出5 4 3 2 1;

(2)那么如果想要优先队列中低优先级的元素先出队列,怎么办呢? --- 自定义优先级

自己实现比较函

  1. struct cmp1  
  2. {  
  3.     bool operator ()(int x,int y)  
  4.     {  
  5.         return x>y; //小值优先  
  6.     }  
  7. };

    1. struct cmp2  
    2. {  
    3.     bool operator ()(int x,int y)  
    4.     {  
    5.         return x<y; //大值优先  
    6.     }  
    7. }

0 0
原创粉丝点击