Deque容器介紹

Deque簡介

deque:['dek]

  • deque(double-ended-queue)也是STL的容器,deque是雙端數組,而vector是單端動態數組的;
  • deque的接口和vector很類似,在多數操作上可直接替換;
  • deque可隨機存取元素,支持索引值直接存取,用[]操作符或at()方法;
  • deque頭部和尾部添加或移除元素非常快,在中部插入或移除元素較費時;

頭文件:

#include<deque>
deque構造函數 功能
deque(); 默認構造函數
deque(n,elem); 帶參構造函數
deque(const vector&vec); 拷貝構造函數
deque(deque_iterator_begin,deque_iterator_end); 迭代器拷貝構造

deque對象的默認構造函數

deque採用模板類實現,deque對象默認構造形式

deque<T>deqT;
//存放int的deque容器
deque<int>deqInt;
//存放float的deque容器
deque<float>deqFloat;
//存放string的deque容器
deque<string>deqString;
//尖括號內可設置指針類型或自定義類型

deque對象的帶參構造

//構造函數將[begin,end)區間中的元素拷貝給本身,區間爲左開右閉
deque<int> deq1,deq2;
deq1(10);
deq2(deq1.begin(),deq1.end());
//構造函數將n個elem拷貝給自身
deque(n,elem);
//拷貝構造函數
deque(const deque &deq);

deque末尾的添加移除操作

//在容器尾部添加一個數據
deque.push_back(elem);
//在容器頭部插入一個數據
deque.push_front(elem);
//刪除容器最後一個數據
deque.pop_back();
//刪除容器內第一個數據
deque.pop_front();

deque的數據存取

//返回索引idx所指的數據,如果idx越界,拋出out_of_range
deque.at(idx);
//返回索引idx所指的數據,若idx越界,不拋出異常,直接出錯
deque[idx];
//返回第一個數據
deque.front();
//返回最後一個數據
deque.back();

deque與迭代器

//返回容器中第一個元素的迭代器
deque.begin();
//返回容器中最後一個之後的迭代器
deque.end();
//返回容器中倒數第一個元素的迭代器
deque.rbegin();
//返回容器中倒數最後一個元素之後的迭代器
deque.rend();

## deque的賦值

```cpp
//將[begin,end)區間中的數據拷貝賦值給本身,區間左開右閉
deque.assign(begin,end);
//將n個elem拷貝賦值給本身
deque.assign(n,elem);
//重載等號操作符
deque& operator=(const deque &deq);
//將vec與本身的元素互換
deque.swap(deq);

deque的大小

//返回容器中元素的個數
deque.size();
//判斷容器是夠爲空
deque.empty();
//重新指定容器的長度爲num,若容器變長,則以默認值填充新位置,若容器變短,則末尾超出容器長度的元素被刪除
deque.resize(num);
//重新指定容器的長度爲num,若容器變長,則以elem值填充新位置,若容器變短,則末尾超出容器長度的元素被刪除
deque.resize(num,elem);

deque的插入

//在pos位置插入一個elem元素的拷貝,返回新數據的位置
deque.insert(pos.elem);
//在pos位置插入n個elem數據,無返回值
deque.insert(pos,n,elem);
//在pos位置插入[begin,end)區間數據,無返回值
deque.insert(pos,begin,end);
//如:
deque<int>deq1,deq2;
deq2.insert(pos,deq1.begin(),deq1.end());

deque的刪除

//刪除容器內所有數據
deque.clear();
//刪除[begin,end)區間的書籍,返回下一個數據的位置
deque.erase(begin,end);
//刪除pos位置的數據,返回下一個數據的位置
deque.erase(pos);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章