STL容器特点对比

1. 分类

  • 序列式容器(sequential container)
    vector, list, array, deque, forward_list
  • 关联式容器(associative container)
    map, multimap, set, multiset, unordered_map, unordered_multimap, unordered_set, unordered_multiset
  • 适配器(adaptor)
    stack, queue, priority_queue

2. 特点对比

内存空间 查询 插入删除
array 静态连续空间 O(1) 不允许
vector 动态连续空间 O(1) 自动扩展size,但需要copy元素,O(n)(从末尾插入/删除则O(1))
list 动态非连续空间 O(n) O(1)
deque 动态(分段)连续空间 小于vector的O(1) 扩展size不需要copy元素,从头、尾两端插入/删除O(1)
stack 动态空间 只能看top() FILO O(1)
queue 动态空间 只能看top() FIFO O(1)
priority_queue 动态空间 只能看top() 同queue O(1)
map 动态空间 O(ln(n)) 插入 O(ln(n))
set 动态空间 O(ln(n)) 插入 O(ln(n))

3. 底层实现(数据结构)

底层数据结构
vector array
list double cycled linked list
deque map
stack list/deque
queue list/deque
priority_queue vector
map RB-tree
set RB-tree
unordered_map hash_table
set hash_table

猜你喜欢

转载自blog.csdn.net/weixin_43762200/article/details/85319689
今日推荐