標籤:cto 指定 類型 隊列模板 out cout std span 一個
一.queue模版類的定義在<queue>標頭檔中。
queue與stack模版非常類似,queue模版也需要定義兩個模版參數,一個是元素類型,一個是容器類型,元素類型是必要的,容器類型是可選的,預設為dqueue類型。
定義queue對象的範例程式碼如下:
queue<int>q1;
queue<double>q2;
queue的基本操作有:
1.入隊:如q.push(x):將x元素接到隊列的末端;
2.出隊:如q.pop() 彈出隊列的第一個元素,並不會返回元素的值;
3,訪問隊首元素:如q.front()
4,訪問隊尾元素,如q.back();
5,訪問隊中的元素個數,如q.size();
二.優先隊列
在<queue>標頭檔中,還定義了一個非常有用的模版類priority_queue(優先隊列),優先隊列與隊列的差別在於優先隊列不是按照入隊的順序出隊,而是按照隊列中元素的優先權順序出隊(預設為大者優先,也可以通過指定運算元來指定自己的優先順序)。
priority_queue模版類有三個模版參數,元素類型,容器類型,比較運算元。其中後兩個都可以省略,預設容器為vector,預設運算元為less,即小的往前排,大的往後排(出隊時序列尾的元素出隊)。
定義priority_queue對象的範例程式碼如下:
priority_queue<int >q1;
priority_queue<pair<int,int> >q2;
priority_queue<int,vector<int>,greater<int> >q3;//定義小的先出隊
priority_queue的基本操作均與queue相同
/*(修理牧場)輸入一組資料得到最小權和*/#include<iostream>#include <cstdio>#include <queue> //隊列模板using namespace std;//priority_queue<int>q; 優先隊列 預設大的先出隊priority_queue<int, vector<int>, greater<int> > q; //優先隊列 定義小的先出隊int main() { int n, m; cout<<"輸入數組長度n:"; cin>>n; cout<<"輸入資料元素:"; for( int i = 0; i < n; i++ ) { cin>>m; q.push( m ); } int sum = 0; while( q.size() > 1 ) { int first = q.top(); q.pop(); int second = q.top(); q.pop(); sum += first + second; q.push( first + second ); } cout<<"最小花費:"<<sum<<endl; return 0;}
queue容器(c++)