雙向結束佇列的操作

2021-06-22 18:37:48 字數 1814 閱讀 3384

/*支援隨機操作,同時雙向插入和刪除,

如果插入和刪除,並且要求隨機訪問,最好用deque

要求訪問的用vector

要求插入和刪除的用list*/

/*deque:double_end_queue*/

#include

#include

#include

using namespace std;

int main()

;dequedeque(4,4);

dequed1(deque);//複製  dequec1(c2); 

d1.assign(a,a+4);

//複製 c1.assign(begin,end); 

d1.assign(4,3);

//複製 c1.assign(n,ele);n個ele;

dequed2(a,a+4);//

複製  dequec(begin,end); 

dequed3(4,2);//複製  dequec(n,ele); 

deque::iterator pos;

int i;

for(i=1;i<=4;i++)

printf("%d\n",d3[i-1]);// 進行隨機訪問操作 c;

for(pos=d2.begin();pos!=d2.end();pos++)

printf("%d\n",*pos);// 進行迭代操作 

printf("****\n"); 

//宣告 deque::iterator pos,pos=c.begin pos=c.end();   

d2.push_front(11);//頭部進入插入操作 

d2.push_back(100);//尾部進入插入操作 

for(pos=d2.begin();pos!=d2.end();pos++)

printf("%d\n",*pos);

d2.pop_front();//頭部進行刪除操作 

d2.pop_back();//尾部進行刪除操作 

for(pos=d2.begin();pos!=d2.end();pos++)

printf("%d\n",*pos);

printf("%d %d\n",d2.front(),d2.back());

//頭元素與 尾元素 c.front(),c.back()

//此外還有c.size(),c.empty(),c.clear(); 

printf("%d\n",d3.at(2));

與c功能相同 

pos=d2.erase(d2.begin()); 

//刪除函式c.erase(pos),刪除pos指標,返回下一位址

//同樣還有 c.erase(behin,end);刪除[begin,end)指標

//返回下一位址 

printf("%d\n",*pos);

pos=d2.insert(pos,59);

printf("%d\n",*pos); 

//插入函式 c.insert(pos, ele)返回新資料位址 

//此外 還有 c.insert(pos,n,ele),c.insert(pos,begin,end);無返回值

pos=find(d2.begin(),d2.end(),59);

if(pos==d2.end())

printf("sssss\n");

else

printf("%d\n",*pos); 

//此外還有交換函式c1.swap(c2) swap(c1,c2); 

return 0;

}

雙向佇列基本操作 (SDUT 1466)

雙向佇列,乙個佇列的隊尾同時也是隊首 兩頭都可以做出隊,入隊的操作。用deque來表示,定義 deque q 乙個佇列,分左邊和右邊,隊首 q.front 隊尾 q.back 是否空判斷 q.empty 清空 q.clean 返回指定元素 q.at 刪除元素 q.erase 頭部壓入 q.push ...

deque雙向佇列

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...

deque雙向佇列

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...