发布时间:2023-11-23 13:00
1.内存空间
vector和数组相似,内存空间是连续的,并且地址不变;list是双向链表实现的,内存空间是不连续的。
2.存取
vector能进行高效的随机存取操作,时间复杂度为O(1);list是通过指针访问数据,不能随机访问,时间复杂度为O(n)。
3.插入或删除
vector因地址时连续的,进行插入和删除操作时会进行内存块的拷贝复制,时间复杂度是O(n);list是非连续的存储结构可以进行快速的插入和删除操作。
4.存储结构
vector是连续的存储结构,是可以实现动态增长的对象数组,支持对数组的高效访问和在数组尾部快速的插入和删除,在中间和头部删除比较不易,需要移动大量的数据;list是非连续的存储结构,是双链表结构,支持链表的双向遍历。每个节点包含元素本身,前驱和后继,因此可以进行高效的访问和插入删除操作。
5.对迭代器的支持不同
相同点在于,vector< int >::iterator和list< int >::iterator都重载了 “++ ”操作。
而不同点在于,在vector中,iterator支持 ”+“、”+=“,”<"等操作。而list中则不支持。