vector 和 list区别
1.底层结构
vector:红黑树,平衡二叉树构成,是一个动态的顺序表
list:双向循环链表
2.随机访问
vector:支持随机访问。时间复杂度O(1)
list:不支持随机访问,只能通过遍历方式,时间复杂度我O(n)
3.插入和删除
vector:不能任意位置删除,因为插入一个元素都需要搬移数据,
list:可以任意位置删除,和插入,通过改变链表前后两个节点的额指向完成
4.空间利用率:
vector:一次性分配好内存空间,如果不够,会以原来空间两倍的方式扩容,扩容后会将原来占有内存全部复制到新内存中,并释放原有内存空间
list:每进行一次插入或者删除都会改变链表的内存空间
5.使用场景
vector:适合需要高效访问和存储,不考虑插入和删除效率的场景
list:适合需要进行大量插入或者删除操作,不考虑随机访问的场景
Every step of barefoot running deserves to be recorded