vecor/list/dequeue

vector

本质是动态数组,从堆中分配内存,拥有连续内存段,支持[] 操作,因此随机存储效率很高。
在中间或者开始处插入元素需要移动内存,效率不高。在尾部进行插入或者删除时则不需要移动内存。
每次容量扩张时扩展2倍,因此存储比较大的结构或者类时比较容易发生内存扩张(而且还要执行构造和析构),比较不划算,最好存储结构或者类的指针,或者小对象。

list

内存空间不连续,每删除一个元素都会释放内存,没有[]操作,比较适合大量的插入删除操作,随机访问效率比较差

deque

双端队列,支持[]操作,效率与vector差不多。支持在两端进行操作,效率与list差不多。

综上

vecotr适用:随机访问频繁、小对象、对象变化少
list适用:频繁插入删除、大对象、变化多

你可能感兴趣的:(algo/data,struct)