vector

采用连续的存储空间实现

优点

  • 占用内存少

  • 支持下标访问,快速的随机访问能力

缺点

  • 插入或删除中间数据效率低,且耗时不固定(对于一些场景来说,影响效率)

  • 只支持尾部push,pop

  • 当可用空间不足时,会重新分配空间(原来的2倍),在C++11之前,会极大地影响效率,因为需要拷贝,再销毁原来元素,还会引起迭代器失效

list

采用链表实现

优点

  • 插入或删除效率高,且耗时固定

  • 可在两端进行push,pop

缺点

  • 占用更多的内存

  • 不支持随机访问

stack

提供栈概念

queue

提供队列(FIFO)概念

dequeue

提供双端队列概念

优点

  • 支持随机访问和at

  • 可在两端进行push、pop

priority_queue

提供优先级队列概念

set

提供集合概念(元素唯一),内部采用平衡二叉树实现,遍历时有序

unordered_set

无序的集合

multiset

可重复的集合

unordered_multiset

无序的,可重复的集合

tuple

提供元组概念(存储一组不同类型的值)

map

提供字典概念,内部采用红黑树实现,遍历时有序

multimap

key可重复的map

unordered_map

无序字典,又叫hashmap,内部采用hash实现,相比map,多占用内存(存放hash桶元素),访问效率高

unordered_multimap

key可重复的hashmap

array

数组,存储固定大小的序列

优点

  • 相比C风格数组,提供了STL式API,越界检查

留言

2016-10-15