stl學習**:
deque容器為乙個給定型別的元素進行線性處理,就如向量,它能夠快速地隨機進入任乙個元素,並且能夠高效地插入和刪除容器的尾部元素。但它與vector不同,deque能支援高效插入和刪除容器的頭部元素,也叫做雙端佇列。
常用函式
//建構函式
deque() //建立乙個空deque
deque(int nsize) //建立乙個deque, 元素個數為nsize
deque(int nsize, const t& t) //建立乙個deque,元素個數為nsize, 且值均為t
deque (const deque &) //拷貝建構函式
//增加函式
void push_front(const t& x) // 雙端佇列頭部增加乙個元素x
void push_back(const t& x) // 雙端佇列尾部增加乙個元素x
iterator insert(iterator it, const t& x) // 雙端佇列中某一元素前增加乙個元素x
void insert(iterator it, int n, const t& x) // 雙端佇列中某一元素前增加n個相同元素x
void insert(iterator it,const_iterator first, const_iterator last)//
// 雙端佇列中某一元素前插入另乙個相同型別向量的[first,last)間的資料
//刪除函式
iterator erase(iterator it) //刪除雙端佇列中某乙個元素
iterator erase(iterator first, iterator last) //刪除雙端佇列中[first,last)中元素
void pop_front() //刪除雙端佇列中最後乙個元素
void pop_back() //刪除雙端佇列中最後乙個元素
void clear() //刪除雙端佇列中所有元素
//遍歷函式
reference at(int pos) //返回pos位置元素的引用
reference front() //返回首元素的引用
reference back() //返回尾元素的引用
iterator begin() //返回向量頭指標,指向第乙個元素
iterator end() //返回向量尾指標,不包括最後乙個元素,在其下面
reverse_iterator rbegin()//反向迭代器,功能等同iterator end()
reverse_iterator rend() //反向迭代器,功能等同iterator begin()
//判斷函式
bool empty() const //向量是否為空?若true,則向量中無元素。
//大小函式
int size() const //返回向量中元素的個數
int max_size() const //返回最大可允許的雙端佇列元素數量值
//其它函式
void swap(vector&) //交換兩個同型別向量的資料
void assign(int n, const t& x) //向量中第n個元素設定成元素x
void assign(const_iterator first, const_iterator last)//向量中[first,last]元素設定成當前向量元素
知識點:
distance
函式可以求出當前的迭代器指標it距離頭部的位置,也就是容器的指標
用法:distance(v1.begin(), it)
//定義deque物件
dequed1;
//尾部插入元素
d1.push_back(10);
d1.push_back(20);
d1.push_back(30);
//頭部插入元素
d1.push_front(1);
d1.push_front(2);
d1.push_front(3);
//尾部刪除元素
d1.pop_back();
//頭部刪除元素
d1.pop_front();
//修改頭部和尾部的值
d1.front() = 111;
d1.back() = 222;
//查詢元素為1的下標
//通過distance求取下標
deque::iterator it = d1.begin();
while (it != d1.end())
it++;
}//遍歷
for (deque::iterator it = d1.begin(); it != d1.end(); it++)
cout << endl;
deque中push_front、pop_front函式示例deque可以通過push_front直接在容器頭增加元素,通過pop_front直接刪除容器頭元素,這一點是vector元素不具備的。
#include #include using namespace std;
void main()
void pop() //刪除隊頭元素
int size() //獲得佇列大小
bool empty() //佇列空否
t& front() //獲得隊頭元素
t& back() //獲得對尾元素
void display()
cout << "原佇列:";
myqueue.display(); cout << endl;//原佇列顯示:1 2 3 4 5
myqueue.pop(); //刪除隊頭元素 1
cout << "刪除隊頭元素後:";
myqueue.display(); cout << endl;
myqueue.push(6); //插入隊尾元素6
cout << "插入隊尾元素6後:";
myqueue.display(); cout << endl;
cout <<"當前隊頭元素:";
cout << myqueue.front() << endl;//獲得隊頭元素
cout <<"當前隊尾元素:";
cout << myqueue.back() << endl; //獲得隊尾元素
}
STL(七)deque雙端佇列容器
deque雙端佇列容器與vector非常相似,不僅可在尾部插入和刪除,還可在頭部插入和刪除,時間複雜度是o 1 是乙個實現了random access container,back insertion sequence 和 front insertion sequence概念的模型。deque內部的...
STL學習筆記 deque容器 雙端動態陣列
簡介 vector是動態陣列,deque是雙端動態陣列,即可以在 尾部插入元素,刪除元素,又可以在頭部插入元素和刪除元素 標頭檔案 include deque很多操作和vector是一樣的,特有的操作如下 front back push back pop back push front 頭部插入 特...
STL順利容器之雙端佇列 deque
雙端佇列是由動態陣列實現。標頭檔案 include 構造方法 dequedeq 建立乙個沒有任何元素的雙端佇列 dequedeq otherdeq 用另乙個型別相同雙端佇列初始化該雙端佇列 dequedeq size 初始化乙個固定size的雙端佇列 dequedeq n,element 初始化n個...