一,基本的成員函數
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)那麼如果想要優先隊列中低優先級的元素先出隊列,怎麼辦呢? --- 自定義優先級
自己實現比較函數
- struct cmp1
- {
- bool operator ()(int x,int y)
- {
- return x>y; //小值優先
- }
- };
- struct cmp2
- {
- bool operator ()(int x,int y)
- {
- return x<y; //大值優先
- }
- };