一.queue模版類的定義在標頭檔案中。
queue與stack模版非常類似,queue模版也需要定義兩個模版引數,乙個是元素型別,乙個是容器型別,元素型別是必要的,容器型別是可選的,預設為dqueue型別。
定義queue物件的示例**如下:
queueq1;
queueq2;
queue的基本操作有:
1.入隊:如q.push(x):將x元素接到佇列的末端;
2.出隊:如q.pop() 彈出佇列的第乙個元素,並不會返回元素的值;
3,訪問隊首元素:如q.front()
4,訪問隊尾元素,如q.back();
5,訪問隊中的元素個數,如q.size();
這裡推薦一道最好的入門佇列題
uva-540 team queue
附上ac**:
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxt=1000+233;
int main()
}queue
q, q2[maxt];
while(1)else
if(cmd[0]=='e')
}cout
0;}
二.優先佇列
在標頭檔案中,還定義了乙個非常有用的模版類priority_queue(優先佇列),優先佇列與佇列的差別在於優先佇列不是按照入隊的順序出隊,而是按照佇列中元素的優先權順序出隊(預設為大者優先,也可以通過指定運算元來指定自己的優先順序)。
優先佇列的基本操作有:
1.入隊:如q.push(x):將x元素接到佇列的末端;
2.出隊:如q.pop() 彈出佇列的第乙個元素,並不會返回元素的值;
3,訪問隊首元素:如q.top()
priority_queue模版類有三個模版引數,元素型別,容器型別,比較運算元。其中後兩個都可以省略,預設容器為vector,預設運算元為less,即小的往前排,大的往後排(出隊時序列尾的元素出隊)。 定義priority_queue物件的示例**如下:
priority_queueq1;
priority_queueint,int> >q2;
priority_queue,greater >q3;//定義小的先出隊
priority_queue的基本操作均與queue相同 初學者在使用priority_queue時,最困難的可能就是如何定義比較運算元了。如果是基本資料型別,或已定義了比較運算子的類,可以直接用stl的less運算元和greater運算元——預設為使用less運算元,即小的往前排,大的先出隊。如果要定義自己的比較運算元,方法有多種,這裡介紹其中的一種:過載比較運算子。優先佇列試圖將兩個元素x和y代入比較運算子(對less運算元,呼叫x小於y,對greater運算元,呼叫x大於y),若結果為真,則x排在y前面,y將先於x出隊,反之,則將y排在x前面,x將先出隊。
如果要自己定義乙個優先佇列。可以定義乙個結構體cmp,過載「()」運算子,使其看上去像乙個函式,然後用priority_queue,cmp>pq
的方式定義。下面是cmp定義的**:
struct cmp
};
優先佇列入門題:
uva-136
ac**:
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int coeff[3]=;
int main()
for(int j=0;j<3;j++)}}
return
0;}
C 佇列queue用法詳解
二 queue常用函式 queue是一種容器轉換器模板,呼叫 include queue 即可使用佇列類。queue 資料型別,容器型別 初始化時必須要有資料型別,容器可省略,省略時則預設為deque 型別 1 queue int q1 queue double q2 queue char q3 預...
queue的長度 佇列 Queue
佇列 queue 是先進先出 fifo,first in first out 的線性表。在具體應用中通常用鍊錶或者陣列來實現。佇列只允許在後端 稱為rear 進行插入操作,在前端 稱為front 進行刪除操作。隊結構 迴圈佇列可以更簡單防止偽溢位 假溢位 的發生,但佇列大小是固定的。防止假溢位,如d...
佇列(queue)原理
像棧一樣,佇列 queue 也是一種線性表,它的特性是先進先出,插入在一端,刪除在另一端。就像排隊一樣,剛來的人入隊 push 要排在隊尾 rear 每次出隊 pop 的都是隊首 front 的人。如圖1,描述了乙個佇列模型。佇列 queue 與棧一樣,是一種線性儲存結構,它具有如下特點 佇列中的資...