最近在作一些leetcode的題,有時選擇了用C++來寫,離不開一些C++容器的使用。因而總結一下C++容器。java
vector<int> V;
V.push_back(1);
V.push_back(2);
vector<int>().swap(V);
//或者 V.swap(vector<int>());
複製代碼
deque支持雙端插入數據。deque的內存空間分佈是小片的連續,小片間用鏈表相連,實際上內部有一個map的指針。deque空間的從新分配要比vector快,從新分配空間後,原有的元素是不須要拷貝的。數組
支持常數時間從容器任何位置插入和移除元素的容器。不支持快速隨機訪問。它一般實現爲雙向鏈表。函數
map是一種關聯容器,該容器用惟一的關鍵字來映射相應的值,即具備key-value功能。map內部自建一棵紅黑樹(一種自平衡二叉樹),這棵樹具備數據自動排序的功能,因此在map內部全部的數據都是有序的,以二叉樹的形式進行組織。ui
queue是一個隊列,實現先進先出功能。queue是在deque的基礎上封裝的。spa
stack是實現先進後出的功能,和queue同樣,也是內部封裝了deque。3d
第一個圖爲簡化圖(其中粗線部分是重點的容器),第二個圖爲完整容器分類圖指針