vector 和 list区别

1.底层结构

vector:红黑树,平衡二叉树构成,是一个动态的顺序表

list:双向循环链表

2.随机访问

  vector:支持随机访问。时间复杂度O(1)

  list:不支持随机访问,只能通过遍历方式,时间复杂度我O(n)

3.插入和删除

  vector:不能任意位置删除,因为插入一个元素都需要搬移数据,

  list:可以任意位置删除,和插入,通过改变链表前后两个节点的额指向完成

4.空间利用率:

  vector:一次性分配好内存空间,如果不够,会以原来空间两倍的方式扩容,扩容后会将原来占有内存全部复制到新内存中,并释放原有内存空间

  list:每进行一次插入或者删除都会改变链表的内存空间

5.使用场景

  vector:适合需要高效访问和存储,不考虑插入和删除效率的场景

  list:适合需要进行大量插入或者删除操作,不考虑随机访问的场景