STL之雙向隊列(dequeue)

//雙向隊列 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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章