STL基礎--容器deque
阿新 • • 發佈:2018-11-21
deque與vector類似,能夠進行隨機查詢
- deque與vector的差異
- vector只能夠在尾部快速地進行插入、刪除操作;而deque能夠在前後兩端進行快速插入、刪除操作
- 訪問元素時,deque內部結構會多一個間接過程,所以元素的訪問和迭代器的移動會比vector稍慢一些
- 在記憶體塊大小有限制的系統中,deque可以包含更多元素,因為他使用不止一塊記憶體
- deque不支援對容量和記憶體重新分配時機的控制
- deque會釋放不再使用的記憶體區塊
- 在中部插入或移除元素較慢,因為所有元素需要移動以騰出或填補空間
- 迭代器屬於random-access iterator
- 需要選擇使用deque的場景
- 需要在兩端安插、移除元素
- 無須指向容器內的元素
- 不再使用的元素必須釋放
根據deque與vector的區別我們猜測一下:vector儲存元素時使用的是一段連續的記憶體,而deque使用的可能是多段記憶體,然後使其組合在一起達到模擬成一段連續的記憶體。下面我們做一些列印來驗證一下這個猜測:
int main() { deque<int> dq; for (int i = 0; i < 100; ++i) { dq.push_back(i); } for (size_t i = 0; i < dq.size(); ++i) { if (i % 5 == 0) { cout << endl; } cout << &dq[i] << ", "; } system("pause"); return 0; }
輸出:
明顯這些地方都出現了記憶體跳動,所以猜測成立
- 構造方法
deque | |