雙佇列和向量很像,不需事先宣告大小,但可以在前端或末端加入或刪除元素
一.常用功能
push_front() 從前端加入一筆資料
push_back() 從後端加入一筆資料
pop_front() 從前端移除一筆資料
pop_back() 從後端移除一筆資
料
size() 取得deque的長度
empty() 測試 deque 是否為空。若為空回傳 true,反之 false。
二.範例
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> de;
de.push_back(10);
de.push_back(20);
de.push_front(30);
de.push_front(40);
for(int i=0;i<de.size();i++)
cout<<de[i]<<"\t";
cout<<endl;
de.pop_back();
de.pop_front();
for(int i=0;i<de.size();i++)
cout<<de[i]<<"\t";
}
作業:
寫一個排隊/插隊程式,可輸入多個姓名和優先權,優先權為1~5的整數,若優先權>=3,則該姓名可以從最前方插隊,若優先權<3,則從後方排隊,當姓名輸入0時結束,並顯示姓名的排隊順序。
請交exe執行檔
#include <iostream>
#include <deque>
using namespace std;
int main(){
bool end=false;
deque<int> de;
while(!end){
int s,d;
cout<<"1.從前端加入資料 2.從後端加入資料 3.從前端移除資料 4.從後端移除資料 5.結束 \n";
cin>>s;
switch(s){
case 1:
cout<<"輸入欲加入的資料:";
cin>>d;
de.push_front(d);
break;
case 2:
cout<<"輸入欲加入的資料:";
cin>>d;
de.push_back(d);
break;
case 3:
cout<<"\n移除前端資料";
de.pop_front();
break;
case 4:
cout<<"\n移除前端資料";
de.pop_back();
break;
case 5:
end=true;
for(int i=0;i<de.size();i++)
cout<<de[i]<<"\t";
break;
cout<<endl;
}
}
}