deque與vector非常相似,不僅可以在尾部插入和刪除元素,還可以在頭部插入和刪除。不過當考慮到容器元素的記憶體分配策略和操作效能時,deque相對vector較為有優勢。
標頭檔案#include
1)deque();//建立乙個沒有任何元素的deque物件。
deque d
2)deque(size_typen);//建立乙個具有n個元素的deque物件,每個元素採用它的型別下的預設值。
deque d(10);//deque物件d有10個元素,每個元素初始值為0。
3)dequedeque d(10,5);
4)deque(const deque&);//deque的拷貝建構函式,通過拷貝乙個deque物件的元素值,建立乙個新的deque物件。
deque d1(5,』a』);
deque d2(d1);
5)deque(constinputiterator first, const inputiterator last, const a& a=a());
//將迭代區間[first,last)所指的元素拷貝到乙個新建立的deque物件中,其中記憶體分配器可預設。
//利用int陣列iarray,建立乙個deque物件d
int iarray=;
deque d(iarray, iarray+7);
初始化賦值
利用deque提供的push_back()函式,可在尾部壓入新元素value,常用作deque容器的初始化賦值。
分別用陣列方式和迭代器方式訪問deque元素。
#include #include using namespace std;
int main(void)
{ dequed;
int i;
d.push_back(13);
d.push_back(32);
d.push_back(29);
cout<<"陣列方式訪問deque元素:"<::iterator j,jend;//定義迭代器
jend=d.end();
cout<<"迭代器訪問deque元素:"《由於deque使用了兩個迭代器分別指向雙端佇列的首尾,因此deque具有高效的頭部插入元素的函式push_front()。中間位置的插入用insert()函式。
void push_front(constt&);//頭部插入
iterator insert(iterator pos, const t& x);//pos位置之前,插入新元素x
#include #include using namespace std;
int main(void)
{ dequed;
d.push_back(6);
d.push_back(7);
//頭部插入
d.push_front(5);
for(int i=0; ideque容器提供了刪除首元素的pop_front函式,刪除尾元素的pop_back函式,刪除任意位置或迭代區間上元素的erase函式,以及刪除所有元素的clear函式。
1)void pop_front();//刪除deque的第乙個元素
2)void pop_back();//刪除deque的最後乙個元素
3)iterator erase(iteratorpos); //刪除pos所指向的元素
4)iterator erase(iterator first, iterator last);//刪除迭代區間[first,last)所指向的所有元素
5)void clear();//刪除所有元素
#include #include using namespace std;
int main(void)
{ dequed;
d.push_back(4);
d.push_back(5);
d.push_back(1);
d.push_back(1);
d.push_back(1);
d.push_back(6);
for(int i=0; i其他函式與vector容器相似,這裡不再贅述,具體可看前篇vector的應用。
C STL之雙端佇列容器
deque雙端佇列容器與vector很類似,採用線性表順序儲存結構。但與vector區別,deque採用分塊的線性儲存結構來儲存資料,每塊的大小一般為512b,將之稱為deque塊,所有的deque塊使用乙個map塊進行管理,每個map資料項記錄各個deque塊的首位址,這樣的話,deque塊在頭部...
C STL之deque雙端佇列
deque與vector非常相似,不僅可在尾部插入和刪除,還可在頭部插入和刪除,但是內部的資料機制和執行效能與vector不同,一般來說,當考慮到容器元素的記憶體分配策略和操作的效能時,deque比vector有優勢。技術原理 deque的元素資料採用分塊的線性結構進行儲存,如下圖所示。deque分...
C STL之雙端佇列容器
deque雙端佇列容器與vector很類似,採用線性表順序儲存結構。但與vector區別,deque採用分塊的線性儲存結構來儲存資料,每塊的大小一般為512b,將之稱為deque塊,所有的deque塊使用乙個map塊進行管理,每個map資料項記錄各個deque塊的首位址,這樣的話,deque塊在頭部...