C++,list,vector,deque有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++,list,vector,deque有啥区别相关的知识,希望对你有一定的参考价值。

list,vector,deque有什么区别

参考技术A Vector:C++容器模板中的大哥大,就像是一个加强版的队列,之所以这样说,是因为它不但有队列形式的索引,还能动态的添加扩充。特点:把被包含的对象以数组的形式存储,支持索引形式的访问(这种访问速度奇快无比)。但由此也产生了一个问题,由于数据存储形式的固定化,你如果想在他中间部位insert对象的话,搞不好会让你吃尽头。因为他在分配空间的时候,可是成块分配的连续空间。
Deque:英文“double-ended-queue”。名如其人,这是C++有序容器中闻名遐迩的双向队列。他在设计之初,就为从两端添加和删除元素做了特殊的优化。同样也支持随即访问,也有类似vector的[
]操作符,但不要因此就把他和vector混为一潭。特点:从本质上讲,他在分配内存的时候,使用了MAP的结构和方法。化整为零,分配了许多小的连续空间,因此,从deque两端添加、删除元素是十分方便的。最重要的一点:如果在不知道内存具体需求的时候,使用deque绝对是比vector好的。
List:模板中的双向链表。设计他的目的可能就是为了在容器中间插入、删除吧,所以有得比有失,他的随机访问速度可不敢恭维。而且没有[
]操作。特点:随机的插入、删除元素,在速度上占有明显的优势。并且,由于内存分配不连续,他对插入的要求也十分的低。所以在使用大对象的时候,这可是一个不错的选择。“

STL中vector,list,deque和map的区别

vector可以理解为普通的数组,list是数据结构中的链表,deque是数据结构中的队列,map是关联数组

vector和map的区别,vector的下标是vector::size_type类型,相当于int
map的下标可以是任意类型
参考技术A

vector可以理解为普通的数组,list是数据结构中的链表,deque是数据结构中的队列,map是关联数组

vector和map的区别,vector的下标是vector::size_type类型,相当于int
map的下标可以是任意类型

以上是关于C++,list,vector,deque有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

deque 和 list STL 容器有啥区别?

STL中vector,list,deque和map的区别

STL中vector,list,deque和map的区别

stl容器区别: vector list deque set map及底层实现

STL中vector,list,deque和map的区别

list和vector有啥区别