list和vector的区别
空间上
list的底层是 一个个节点链接起来的,自然是不连续的空间。 vector的底层是3个指针共同维护的一段连续的空间
vector:连续空间,不易造成内存碎片,空间利用率高。
list:结点不连续,易造成内存碎片,小元素结点密度低,空间利用度低。
迭代器
list的迭代器不是随机迭代器,无法对迭代器进行 += , + , - , -= 等操作,因此list要使用sort只能使用自己的sort, 但是list进行sort排序的效率极低,甚至不如将数据拷贝到vector并用vector排好后再重新存到list中的效率。
vector的迭代器是随机迭代器,因此可以直接用sort排序且效率不错
list的迭代器是对节点的封装,vector的迭代器 本质上是 一个指针
适用场景
list常常适用于 频繁进行头插,头删,且频繁对数据进行删除和插入的情形。
vector常常适用于 尾插 , 尾删 , 常常对数据进行访问的情形。