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
明顯相似,所以我們會提出下面的疑問。
問題:如果deque和vector可以提供相同功能的時候,我們使用哪乙個更好呢?
回答:如果你要問的話,就使用
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...