C deque容器的理解

2021-10-07 19:37:58 字數 3173 閱讀 5526

deque容器(發音類似"deck"),

一種動態陣列,允許通過隨機訪問迭代器直接訪問單個元素,可以根據需要動態的伸縮。

deque與vector相似,但deque在頭部和尾部進行資料插入和刪除操作更加高效。

vector與deque相似,但內部的實現原理不同:vector使用了動態陣列,該陣列通常需要動態增長;deque中的元素在不同的緩衝區中,在deque中儲存了一些必要的資訊(位址)。

除了頻繁在頭部或尾部進行插入和刪除的操作外,deque容器的效率不高。

內部工作原理

deque內部有個中控器,維護每段緩衝區中的內容,緩衝區中存放真實資料

中控器維護的是每個緩衝區的位址,使得使用deque時像一片連續的記憶體空間

**:

#include

using

namespace std;

#include

void

printdeque

(const deque<

int>

& d)

cout << endl;

}int

main()

printdeque

(d1);

deque<

int>

d2(d1.

begin()

,d1.

end())

;printdeque

(d2)

; deque<

int>d3(

10,100)

;printdeque

(d3)

; deque<

int>d4 = d3;

printdeque

(d4)

;return0;

}

**:

#include

using

namespace std;

#include

void

printdeque

(const deque<

int>

& d)

cout << endl;

}//賦值操作

intmain()

printdeque

(d1)

; deque<

int>d2;

d2 = d1;

//過載等號,直接賦值

printdeque

(d2)

; deque<

int>d3;

d3.assign

(d1.

begin()

, d1.

end())

;//將[beg, end)區間中的資料拷貝賦值給本身。

printdeque

(d3)

; deque<

int>d4;

d4.assign(10

,100);

//將n個elem拷貝賦值給本身。

printdeque

(d4)

;}

**:

#include

using

namespace std;

#include

void

printdeque

(const deque<

int>

& d)

cout << endl;

}//大小操作

intmain()

printdeque

(d1)

;//判斷容器是否為空

if(d1.

empty()

)else

//重新指定大小

d1.resize(15

,1);

printdeque

(d1)

; d1.

resize(5

);printdeque

(d1)

;return0;

}

**:

#include

using

namespace std;

#include

void

printdeque

(const deque<

int>

& d)

cout << endl;

}//資料訪問

intmain()

cout << endl;

//at()

for(

int i =

0; i < d.

size()

; i++

) cout << endl;

//front

cout <<

"front:"

<< d.

front()

<< endl;

//back

cout <<

"back:"

<< d.

back()

<< endl;

}

兩端插入操作:

指定位置操作:

**:

#include

using

namespace std;

#include

void

printdeque

(const deque<

int>

& d)

cout << endl;

}//兩端操作

void

test01()

//插入

void

test02()

//刪除

void

test03()

intmain()

注意:插入和刪除提供的位置是迭代器!

利用演算法實現對deque容器進行排序

**就不展示了,但是在這裡需要說明的一點是:

deque中排序操作的效率非常低的,因為deque中的元素在底層的實現上是不連續的。可以考慮將deque中的元素拷貝到乙個vector中,然後排序之後,再將元素拷貝回來。

C deque容器的用法詳解

deque 雙端佇列 是由一段一段的定量連續空間構成,可以向兩端發展,因此不論在尾部或頭部安插元素都十分迅速。在中間部分安插元素則比較費時,因為必須移動其它元素。deque容器的建構函式 deque和vector的區別 deque對於頭部的插入和刪除效率低,資料量越大,效率越低 deque相對而言,...

收藏向 C Deque容器基礎知識解析

deque賦值操作 deque大小操作 deque插入和刪除 deque資料訪問 deque排序 功能 deque與vector區別 deque內部工作原理 deque deqt 預設構造形式 deque beg,end 建構函式將 beg,end 區間中的元素拷貝給本身。deque n,elem ...

C deque 佇列) 的使用

序列 動態陣列 allocator aware 序列容器的元素按嚴格線性排列,可按順序訪問它們的位置 動態陣列允許直接訪問其任何元素,可快速在序列首尾相對快速進行元素新增 刪除 容器通過 allocator 物件動態處理儲存需求 public member function begin 將迭代器返回...