容器函式 deque

2021-04-25 06:39:25 字數 3199 閱讀 3672

deque總覽

deque

和vector

一樣都是標準模板庫中的內容,

deque

是雙端佇列,在介面上和

vector

非常相似,在許多操作的地方可以直接替換。假如讀者已經能夠有效地使用

vector

容器,下面提供

deque

的成員函式和操作,進行對比參考。

deque成員函式

函式

描述

c.assign(beg,end)

c.assign(n,elem) 將

[beg; end)

區間中的資料賦值給c。

將n個elem

的拷貝賦值給c。

c.at(idx)

傳回索引

idx所指的資料,如果

idx越界,丟擲

out_of_range。

c.back()

傳回最後乙個資料,不檢查這個資料是否存在。

c.begin()

傳回迭代器重的可乙個資料。

c.clear()

移除容器中所有資料。

deque c

deque c1(c2)

deque c(n)

deque c(n, elem)

deque c(beg,end)

c.~deque()

建立乙個空的

deque

。 複製乙個

deque

。 建立乙個

deque

,含有n

個資料,資料均已預設構造產生

。 建立乙個含有n個

elem

拷貝的deque

。 建立乙個以

[beg;end)

區間的deque

。 銷毀所有資料,釋放記憶體。

c.empty()

判斷容器是否為空。

c.end()

指向迭代器中的最後乙個資料位址。

c.erase(pos)

c.erase(beg,end)

刪除pos位置的資料,傳回下乙個資料的位置。

刪除[beg,end)

區間的資料,傳回下乙個資料的位置。

c.front()

傳回地乙個資料。

get_allocator

使用建構函式返回乙個拷貝。

c.insert(pos,elem)

c.insert(pos,n,elem)

c.insert(pos,beg,end) 在

pos位置插入乙個

elem

拷貝,傳回新資料位置。

在pos

位置插入n個

elem

資料。無返回值。

在pos

位置插入在

[beg,end)

區間的資料。無返回值。

c.max_size()

返回容器中最大資料的數量。

c.pop_back()

刪除最後乙個資料。

c.pop_front()

刪除頭部資料。

c.push_back(elem)

在尾部加入乙個資料。

c.push_front(elem)

在頭部插入乙個資料。

c.rbegin()

傳回乙個逆向佇列的第乙個資料。

c.rend()

傳回乙個逆向佇列的最後乙個資料的下乙個位置。

c.resize(num)

重新指定佇列的長度。

c.size()

返回容器中實際資料的個數。

c1.swap(c2)

swap(c1,c2) 將

c1和c2元素互換。

同上操作。

deque操作

函式

描述

operator

返回容器中指定位置的乙個引用。

上面這些特徵和

vector

明顯相似,所以我們會提出下面的疑問。

問題:如果dequevector可以提供相同功能的時候,我們使用哪乙個更好呢?

回答:如果你要問的話,就使用

vector吧。

或者你給個解釋?

非常高興你這樣問,的確,這並不是無中生有的,事實上,在

c++標準裡解釋了這個問題,在

23.1.1span style="font-size: 9pt; font-family: 宋體; mso-ascii-font-family: 'times new roman'; mso-hansi-font-family: 'times new roman'">章節有下面乙個片斷:

vector

在預設情況下是典型的使用序列的方法,對於

deque

,當使用插入刪除操作的時候是乙個更好的選擇。

有趣的是,本文就是要非常徹底地理解這句話。

什麼是新的?

細讀上面兩張**,你會發現和

vector

比較這裡增加了兩個函式。

1、c.push_front(elem)

——在頭部插入乙個資料。

2、c.pop_front()

——刪除頭部資料。

呼叫方法和

c.push_back(elem)

和c.pop_back()

相同,這些將來會告訴我們對於

deque

會非常有用,

deque

可以在前後加入資料。

c STL容器之deque容器

deque是雙端陣列。deque和vector的區別 deque內部工作原理 deque內部有個中控器,維護每段緩衝區中的內容,緩衝區中存放著真實資料。中控器維護的是每個緩衝區的位址,使得使用每個deque時像一塊連續的記憶體空間。deque容器的迭代器是支援隨機訪問的。一 deque建構函式 de...

STL容器 deque實現

vector是單向開口的連續線性空間,deque則是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。vector雖然從技術上也可以實現對頭尾兩端進行操作,但由於vector的底層實現特點的原因,其頭部操作效率奇差,故stl沒有為vector實現這一功能。deque和vector...

STL通用容器之 deque 容器

1.5deque容器 deque容器為乙個給定型別的元素進行線性處理,就如向量,它能夠快速地隨機進入任乙個元素,並且能夠高效地 入和刪除容器的尾部元素。但它與vector不同,deque能支援高效插入和刪除容器的頭部元素,也叫做雙端佇列.1 建構函式 deque 建立乙個空deque deque i...