我是靠谱客的博主 无情春天,最近开发中收集的这篇文章主要介绍[C++]vector,list和deque的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部