vector和deque區別

 

先說句題外話哈:標準的C++頭文件都沒有.h後綴,有.h的文件是與C兼容的,或支持老的不標準的東西,如<iostream.h>
1、std::vetor
at(n)和operator[](n)都返回下標爲n的元素的引用,但是at()進行下標越界檢查,若越界,拋出range_error,opteraor[]不進行下標檢查。
2、std::deque (double-ended queue),在堆中保存內容,保存形式:
[堆1]

[堆2]

[堆3]

每個堆保存好幾個元素,堆和堆之間用指針指向,可以在隊列前面快速的添加刪除元素

3、vector與deque二者容器的區別

(1、deque訪問容器元素的效率比vector容器慢很多;
 原因在於deque要跨內存塊來訪問,而vector只是使用一個內存塊,不用跨內存的操作。vector容器相當於一個可以動態分配的數組。
(2、擴充容器容量的方面deque比vector的效率高很多;
 deque是申請一個小的內存塊,然後把新申請的內存塊與其它的deque內存塊整合起來。
 vector是申請一個比原先更大的新內存塊,把原vector裏面的數據複製到新的大內存塊裏面,然後還的銷燬原先vector的內存塊。所以,在容量擴充方面,deque比vector高效,而且內存利用率也高。
(3、vector不可以收縮,deque自動收縮;
 vector不支持把容器的容量調小的操作,小於的情況不會有任何操作。而deque因爲它是有很多小內存塊的組成的,所以有空閒的內存塊時,會銷燬空閒的內存塊,但不會影響deque裏面已有的數據。

vector在默認情況下是典型的使用序列的方法,對於deque,當使用插入刪除操作的時候是一個更好的選擇
deque比vector增加了兩個函數:
 (1、c.push_front(elem) —— 在頭部插入一個數據。

 (2、c.pop_front() —— 刪除頭部數據。

deque比vector少了兩個函數:
  (1、capacity()—— 返回vector當前的容量。

  (2、reserve() —— 給指定vector的大小。

發佈了15 篇原創文章 · 獲贊 14 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章