本文所有內容均在 gnu c++ (64位) 裡瞎搞出來,有很多猜測,僅供參考
vector/deque/list/forward_list >
set , allocator>
map , allocator< pair> >
unordered_set < t, hash, equal_to, allocator>
unordered_map < t, u, hash, equal_to, allocator< pair> >
basic_string/basic_stringstream , allocator>
queue/stack >
priority_queue , less>
array bitset
容器
sizeof
擴容方式
記憶體釋放方式
vector
24每次兩倍
不釋放deque
80初始512位元組,每次512位元組+少量額外記憶體
基本釋放
list
16要多少申請多少
不留多餘記憶體
forward_list
8要多少申請多少
不留多餘記憶體
(multi)set/map
48要多少申請多少
不留多餘記憶體
unordered_(multi)set/map
56要多少申請多少+桶的記憶體
桶不釋放,其餘不留多餘記憶體
string
8每次兩倍+少量額外記憶體
不釋放stringstream
368初始512位元組,每次兩倍+少量額外記憶體
不釋放
C STL容器概念
string其實相當於乙個儲存字元的序列容器,因此除了有字串的一些常用操作以外,還有包含了所有的序列容器的操作。字串的常用操作包括 增加 刪除 修改 查詢比較 鏈結 輸入 輸出等 是乙個封裝了動態大小陣列的順序容器,是乙個可以存放任意型別的動態陣列。實體地址與邏輯位址連續,可以實現快速訪問 首位址 ...
c STL 容器 聯合容器
stl提供了四種聯合容器 set,multiset,map,multimap set and multiset在標頭檔案 map and multimap在標頭檔案 模板函式都一樣的 set map中迭代器不能 或 因為不是連續的序列,是樹。set 在set中,值就是關鍵字,集合中不會有多個相同的關...
C STL 容器Vector的簡單概念和用法
一 vector的概念 模板類vector類似於string類,本質上也是一種動態陣列。它是使用new運算子動態建立陣列的替代品。實際上,vector類確實用new和delete運算子來管理記憶體 計算機自動完成 因此,vector類所建立的物件都儲存在自由儲存區即 free store。二 使用v...