C STL 容器重要概念

2022-05-09 20:09:32 字數 855 閱讀 3948

本文所有內容均在 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...