概述
vector封装了数组,拥有一段连续的内存空间,并且起始地址不变。因此vector可以非常好地支持随机存取,支持[]操作符重载和vector.at()。
但是由于它的内存空间是连续的,所以在vector中间进行插入和删除会造成内存块的拷贝和移动,复杂度是O(n)。 此外,当该数组的内存空间不够时,需要重新申请一块足够大的内存并进行内存拷贝,这些都降低了vector的效率。
但是在vector的尾部插入速度很快,所有vector有push_back()和pop_back()操作。
list封装了双向链表,因此它的内存空间可以是不连续的,因此只能通过指针来进行数据访问。list的随机存取变得非常没有效率,需要遍历所有元素,搜索复杂度O(n)。
但是list可以很方便地支持任意位置的删除和插入,只要修改指针的指向就行了。list相对vector占用内存较多。
deque 双端队列,在功能上合并了vector和list,随机访问方便,在内部可以方便地进行插入和删除操作,可以在两端进行push,pop。缺点是占用内存多。
最后
以上就是无情春天为你收集整理的[C++]vector,list和deque的区别的全部内容,希望文章能够帮你解决[C++]vector,list和deque的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复