[C++]vector,list和deque的区别
来源:互联网 发布:line是什么聊天软件 编辑:程序博客网 时间:2024/05/17 15:18
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。缺点是占用内存多。
0 0
- [C++]vector,list和deque的区别
- list与vector和deque的区别
- list和vector及deque的区别
- vector、list和deque的区别
- vector、list、deque和map的区别
- Vector , list 和 deque的区别
- list,vector,deque 的区别
- list vector deque的区别
- vector, list, deque的区别
- vector和list以及deque的区别和各自优缺点
- 借鉴别人的vector和list以及deque的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- Httpwatch抓包分析
- 配置F5负载均衡
- f5配置实例
- Exception in thread "main" java.lang.NoClassDefFoundError: xxx (wrong name:xxx)
- 关于MySql的Unhandled异常
- [C++]vector,list和deque的区别
- leetcode(304) Range Sum Query 2D - Immutable
- java设计模式——观察者模式
- MySQL主从复制
- Android adb shell 报错:more than one device and emulator
- EMV规范(三)——应用初始化
- 利用委托事件实现Winform窗体之间的同步刷新
- 如何清晰地思考
- 装饰模式