1 vector
向量 相当于一个数组
在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,
当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。
优点:(1) 不指定一块内存大小的数组的连续存储,即可以像数组一样操作,但可以对此数组
进行动态操作。通常体现在push_back() pop_back()
(2) 随机访问方便,即支持[ ]操作符和vector.at()
(3) 节省空间。
缺点:(1) 在内部进行插入删除操作效率低。
(2) 只能在vector的最后进行push和pop,不能在vector的头进行
push和pop。
(3)
当动态添加的数据超过vector默认分配的大小时要进行整体的重新分配、拷贝与释
放
2 list
双向链表
每一个结点都包括一个信息快Info、一个前驱指针Pre、一个后驱指针Post。可以不分配必须的内存大小方便的进行添加和删除操作。使用的是非连续的内存空间进行存储。
优点:
(1) 不使用连续内存完成动态操作。
(2) 在内部方便的进行插入和删除操作
(3) 可在两端进行push、pop
缺点:(1)
不能进行内部的随机访问,即不支持[ ]操作符和vector.at()
(2) 相对于verctor占用内存多
3 deque
双端队列 double-end queue
deque是在功能上合并了vector和list。
优点:
(1) 随机访问方便,即支持[ ]操作符和vector.at()
(2) 在内部方便的进行插入和删除操作
(3) 可在两端进行push、pop
缺点:
(1) 占用内存多
使用区别:
1 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
2 如果你需要大量的插入和删除,而不关心随即存取,则应使用list
3 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque
分享到:
相关推荐
STL中vector、list、deque和map的区别
在这个主题中,我们将深入探讨vector、list、map、set和deque这五个主要的STL容器,并通过具体的例子和PPT讲解来理解它们的应用。 1. **vector**:vector是动态数组,它可以方便地在任何位置插入和删除元素,但主要...
学习`vector`容器时,还需要理解其与其他STL容器如`deque`、`list`和`array`的区别,以便在不同的场景下选择最合适的容器。例如,`deque`在两端插入和删除更高效,`list`则适合频繁的插入和删除,而`array`是固定...
在这个"STL.zip"压缩包中,包含了对vector和deque两种重要容器的自定义实现,以及一系列用于测试这些数据结构的用例。下面我们将深入探讨这两个容器及其相关的编程概念。 首先,`vector`是STL中最常见的动态数组,...
6. **与其他容器的比较**:`std::vector`与`std::deque`、`std::list`等其他STL容器在不同操作上的性能对比,可以帮助选择适合特定应用场景的容器。 **总结** “STL_Depue_Vector_Compare”可能是一个关于`std::...
STL 中的容器包括 vector, deque, list, set, multiset, map, multimap 等。每种容器都有其特点和用途。例如,vector 支持运行时加入新的元素,但是在任意位置插入元素效率较低;map 是一种关联容器,可以根据键值...
- **<stl_list.h>**:`list`是一个双向链表,支持双向迭代和高效插入/删除操作,但随机访问效率较低。 - **<stl_set.h>**:`set`是另一种关联容器,类似于`map`,但它只存储键,不允许重复键值。 - **<stl_deque.h>*...
1. 容器:如vector、list、deque、set、map等,它们用于存储和管理数据。 2. 迭代器:类似于指针,但提供了更加安全和灵活的方式来遍历容器中的元素。 3. 算法:如sort、find、count等,它们可以应用于各种容器,...
顺序容器包括 vector、deque、list 等,关联容器包括 set、multiset、map、multimap 等,容器适配器包括 stack、queue、priority_queue 等。 顺序容器是 STL 中的一种基本容器,用于存放各种类型的数据。顺序容器...
例如,你可以使用STL的sort算法对不同类型的容器进行排序,无论是vector、list还是deque,只要它们的迭代器支持必要的操作,sort都能工作。这是因为sort算法并不关心容器的具体实现,它只依赖于迭代器提供的访问和...
STL的主要组件包括容器(如vector、list、set等)、迭代器、算法和函数对象。面试中,对STL的熟悉程度往往反映了程序员对现代C++的理解深度。以下将详细介绍这四个文档可能涉及的STL相关知识点。 1. **STL说明.doc*...
本资源包含了多个STL容器和算法的源码分析,包括string、vector、deque、list、map、set、bitset、queue和stack等,这些文件名对应了STL中的主要组件。 首先,`string.txt`涉及的是C++中的字符串类,它是处理文本...
在这个名为“stl_test”的项目中,我们主要关注STL中的几种容器:deque(双端队列)、list(链表)、vector(动态数组)、stack(栈)、map(关联数组)、set(集合)以及hashmap(哈希表)。这些容器在不同的场景下...
本篇文章将详细讲解STL中的三个核心容器:map、vector和list,以及它们的基本操作。 首先,我们来看**map**。Map是一个关联容器,它存储键值对(key-value pairs),每个键都是唯一的。键和对应的值通过一对尖括号...
2. STL中的容器:STL提供了多种容器,包括vector、list、deque、set、map等,每种容器都有其特点和使用场景。 3. STL中的算法:STL提供了多种算法,包括find、copy、sort、merge等,每种算法都有其特点和使用场景。 ...
1. **理解容器**:书中首先讲解了STL容器的特性,如vector、list、deque、set、map等。每个容器都有其特定的性能特征和适用场景,例如,vector适合随机访问,而list适合频繁的插入和删除操作。 2. **迭代器的使用**...
1. **容器**:STL提供了多种容器来存储数据,如vector、list、deque、set、map等。vector是一个动态数组,适合快速访问元素;list是一个双向链表,支持高效的插入和删除操作;deque(双端队列)允许在两端进行插入和...
STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。...例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。