vector 和 list的区别

vector和list是两种常见的C++容器,它们之间有以下区别:

底层实现不同

vector底层使用的是连续的内存空间,通过数组实现。而list底层使用的是双向链表,通过指针实现。

随机访问效率不同

由于vector底层使用的是数组,所以它可以通过下标随机访问元素,时间复杂度为O(1);而list不支持下标访问,只能通过迭代器进行顺序访问,时间复杂度为O(n)。

插入和删除效率不同

 

由于vector底层使用的是数组,当在中间位置插入或删除元素时,需要将后面的元素都往后或往前移动,时间复杂度为O(n);而list由于底层是链表结构,插入或删除元素只需要改变相邻节点的指针指向,时间复杂度为O(1)。

内存使用效率不同

由于vector底层使用的是数组,它需要预分配一定大小的内存空间,在需要扩容时需要重新分配内存并将原有元素复制到新的内存空间中,导致内存空间的浪费;而list由于底层是链表结构,它的内存使用效率相对较高。

根据具体的需求,选择不同的容器可以使得代码更高效、更易于实现。比如,当需要随机访问元素时,可以使用vector;当需要频繁插入和删除元素时,可以使用list。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《vector 和 list的区别》
文章链接:https://zhuji.vsping.com/5165.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。