c++容器

一、vector:實質是動態堆數組,連續存儲的內存區域,支持快速的隨機訪問。數組

二、list:實質是雙向循環鏈表,支持在中間進行快速的插入刪除,可是不能支持快速的隨機訪問。非連續的內存區域。指針

三、deque:也支持快速的隨機訪問,但隨機訪問的速度不及vector,連續存儲的內存區域,可是分爲兩級,一級相似於vector,存儲實際數據,另外一層做爲一個Mapblog

deque的實現比較複雜,內部會維護一個map(注意!不是STL中的map容器)即一小塊連續的空間,該空間中每一個元素都是指針,指向另外一段(較大的)區域,這個區域稱爲緩衝區,緩衝區用來保存deque中的數據。所以deque在隨機訪問和遍歷數據會比vector慢。具體的deque實現能夠參考《STL源碼剖析》,固然此書中使用的SGI STL與VS2008所使用的PJ STL的實現方法仍是有區別的。下面給出了deque的結構圖:內存

四、map:實質是一顆紅黑樹。源碼

相關文章
相關標籤/搜索