deque与queue的区别 deque用法和与vector的区别?
deque用法和与vector的区别?
deque和vector的主要区别如下:
1。两端可以快速插入和删除元素,这些操作可以在摊销的固定时间内完成。
2. 元素的访问和迭代器的动作都比向量慢。
3. 迭代器需要在不同的块之间跳转,因此它不是一般的指针。
4. 因为deque使用多个内存(而且vector必须使用一个连续内存),所以dequeusize()的最大值可能会更大。
5. 不支持控制容量和内存重新分配时间。然而,deque的内存重新分配比vector的要好,因为它的内部结构表明deque在内存重新分配期间不必复制所有元素。
6. 除了头和尾,在任何地方插入或删除元素都会导致指向deque元素的所有点、引用和迭代器无效。
7. 当deque的内存块不再使用时,它将自动释放。deque的内存大小可以自动减少。
8. Deque和vector组织记忆的方式不同。在底层,deque通过“page”或“chunk”分配内存,每个页面包含固定数量的元素。Vector只分配一个连续的内存块。例如,一个10m字节的向量使用整个10m字节的内存,而deque可以使用一系列较小的内存块,比如101M内存块。因此,deque的地址(例如&deque[0])不能传递给传统的capi,因为deque中使用的内存不一定是连续的。deque的以下特性与vector类似:1。中间元素的插入和删除速度很慢。2迭代器属于随机访问迭代器。你喜欢矢量还是德克?C级?标准建议向量是默认情况下应该使用的序列。如果大多数插入和删除操作发生在序列的开头或结尾,则应选择Deque。注:1。除了at(),其他成员函数不会检查索引或迭代器是否有效。2任何insert或delete操作都将使指向deque元素的所有指针、引用和迭代器无效。唯一的例外是在head或tail中插入元素(此时,指针和引用仍然有效,但迭代器无效)。
list,vector和deque的区别?
1. 矢量连续存储结构,每个元素在内存中是连续的;它支持有效的随机存取和最后的插入/删除操作,但在其他位置的插入/删除操作效率很低;它相当于一个数组,但与数组的区别是:内存空间的扩展。
Vector支持存储,不指定Vector的大小,但数组的扩展需要程序员编写。向量内存分配的原理如下:当STL在内部实现时,它会为存储分配非常大的内存空间,即capacity()函数返回的大小。当它超过分配的空间时,它会分配一个内存块(VS6.0是VS2005的1.5倍)。因此,它给人的感觉是向量不能指定连续存储器的大小。通常,这种默认内存分配可以完成大部分存储。扩展空间(无论多大)应该做到以下几点:(1)配置一个新的空间;(2)将旧的元素逐个移动到新的地址;(3)将原来的空间释放回系统。注:矢量的数据排列和操作方式与数组非常相似。两者之间唯一的区别是在空间使用上的灵活性。数组的扩展空间应由程序员自己编写。vector类定义了几个构造函数来定义和初始化vector对象:vector
deque与queue的区别 deque方法 enqueue和dequeue的用法
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。