C++ STL 容器重要概念

时间:2020-09-17 23:27:20   收藏:0   阅读:41

本文所有内容均在 GNU C++ (64位) 里瞎搞出来,有很多猜测,仅供参考

如何定义

vector/deque/list/forward_list <T, allocator<T> >
set <T, less<T>, allocator<T> >
map <T, U, less<T>, allocator< pair<T, U> > >
unordered_set < T, hash<T>, equal_to<T>, allocator<T> >
unordered_map < T, U, hash<T>, equal_to<T>, allocator< pair<T, U> > >
basic_string/basic_stringstream <T, char_traits<T>, allocator<T> >
queue/stack <T, deque<T> >
priority_queue <T, vector<T>, less<T> >
array <T, N>
bitset <N>

内存分配

容器 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字节,每次两倍+少量额外内存 不释放

时间复杂度

迭代器

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!