1. 程式人生 > >STL之雙向隊列(dequeue)

STL之雙向隊列(dequeue)

create 一個數 back 刪除元素 賦值 為我 ces 線性 assign

//雙向隊列 deque
#include <deque>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
deque<int> ideq(20);//Create a deque ideq with 20 elements of default value 0
deque<int>::iterator pos;
int i;


for (i = 0; i < 20; ++i)//一開始它們的初值都是0
printf("%d ", ideq[i]);
putchar(‘\n‘);

//使用assign()賦值 assign在計算機中就是賦值的意思
for (i = 0; i < 20; ++i)
ideq[i] = i;

//輸出deque
printf("輸出deque中數據:\n");
for (i = 0; i < 20; ++i)
printf("%d ", ideq[i]);
putchar(‘\n‘);

//在頭尾加入新數據
printf("\n在頭尾加入新數據...\n");
ideq.push_back(100);
ideq.push_front(i);

//輸出deque
printf("\n輸出deque中數據:\n");
for (pos = ideq.begin(); pos != ideq.end(); pos++)
printf("%d ", *pos);
putchar(‘\n‘);

//查找
const int FINDNUMBER = 19;
printf("\n查找%d\n", FINDNUMBER);
pos = find(ideq.begin(), ideq.end(), FINDNUMBER);
if (pos != ideq.end())
printf("find %d success\n", *pos);
else
printf("find failed\n");

//在頭尾刪除數據
printf("\n在頭尾刪除數據...\n");
ideq.pop_back();
ideq.pop_front();

//輸出deque
printf("\n輸出deque中數據:\n");
for (pos = ideq.begin(); pos != ideq.end(); pos++)
printf("%d ", *pos);
putchar(‘\n‘);
return 0;
}

以上代碼是一個演示qwq;

deque雙向隊列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在接口上和vector非常相似,下面就總結一下deque的常用成員函數:

(本人技術水平比較差,列不全請見諒qwq)

這是基礎操作:

deque<int> c(20); //建立一個int類型的有20位的雙向隊列

c.front() //返回該雙向隊列的第一個數據

c.back() //返回該雙向隊列的最後一個數據

c.empty()  //判斷該循環隊列是否為空

c.maxsize()  //返回循環隊列中最大數據的數量

c.size()   //返回循環隊列實際元素的個數
c.begin() //這是指向該雙向隊列第一個數據的叠代器 c.end() //這是指向該雙向隊列最後一個數據的叠代器 c.rbegin() //指向逆向隊列的第一個數據 c1.swap(c2) //將c1與c2的元素互換 swap(c1,c2) //同上 c.rend() //指向逆向隊列最後一個位置的下一個位置的叠代器

這是添加操作:

c.push_front()   //在頭部插入一個數據

c.push_back()   //在尾部插入一個數據

c.insert(pos,x)   //在pos位置插入一個x的拷貝,並返回新數據的位置

c.insert(pos,begin,end)   
//在pos位置插入在[begin,end)之間的數據,無返回值 c.pop_back() //刪除最後一個數據 c.pop_front() //刪除第一個數據 c.erase(pos) //刪除pos位置的數據,並返回下一個位置的叠代器 x.erase(begin,end) //刪除[begin,end)區間的數據,返回下一個數據的位置

但是不知道是什麽玄學原因,deque的隨機訪問和遍歷數據相比而言會比vector慢一些;

但是我不會吶qwq,因為我弱qwq。

好噠,寫完撒花(qwq)

STL之雙向隊列(dequeue)