/*支援隨機操作,同時雙向插入和刪除,
如果插入和刪除,並且要求隨機訪問,最好用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容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...