C STl之雙端佇列

2021-09-26 23:26:25 字數 2069 閱讀 6187

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塊在頭部...