- 浏览: 18467 次
文章分类
最新评论
http://blog.csdn.net/ianleelj/article/details/3939354 原文出处。
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
在内存中分配一块连续的内存空间进行存储。支持不指定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
发表评论
-
sizeof()
2013-01-09 09:21 688在写程序的时候遇到了如何求字符串占多少长度的内存空间问题。先看 ... -
c/c++语言好坏pk的两篇文章
2012-12-21 22:30 0http://simpleprogrammer.com/201 ... -
hash算法常备链接
2012-12-21 16:13 635在这里总结几个常用的hash函数出来,留备后续用到时候方 ... -
在写哈弗曼算法的时候遇到的一篇好博客
2012-12-17 21:27 0在自己编写哈弗曼算法的时候,遇到了这篇文章。意外的发现,哈弗曼 ... -
strcpy()/memcpy()
2013-01-04 17:08 869陆陆续续总结几个常用函数的原型出来,为以后再看到时查阅的方便。 ... -
初写c++程序
2012-12-08 20:33 0几乎是第一次完整的写一个c++的程序,真所谓不写不知道,一写吓 ... -
汉诺塔问题
2012-11-20 22:46 767原文出处:http://zh.wikipedia.org/wi ... -
迷宫求解算法
2012-11-20 21:05 976原文出处: http://blog.csdn.net/ ... -
双端队列deque (非原创)
2012-11-16 21:44 745http://hi.baidu.com/xuehuo_0411 ... -
头文件的重复包含
2012-10-19 10:48 628#ifndef XXXX_H #define XXXX_H ... -
malloc函数/强制类型转换/单链表案例/
2012-10-11 19:59 9931.malloc()函数的函数原型如下: void *ma ... -
assert 断言
2012-09-17 20:22 621assert宏的原型定义在<assert.h>中, ... -
C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组(2)
2012-07-04 21:14 898//读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换 ... -
C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组(1)
2012-07-04 20:33 1286fstream提供了三个类,用来实现c++对文件的操作。(文件 ...
相关推荐
2.4 三者比较 3 关联容器 3.1 特点 3.2 C++ SETS & MULTISETS 3.3 C++ MAPS & MULTIMAPS 4 容器适配器 4.1 特点 4.2 C++ STACKS(堆栈) 4.3 C++ QUEUES(队列) 4.4 C++ PRIORITY QUEUES(优先队列) 5 迭代器 ...
`stack`、`queue`和`priority_queue`是STL提供的三种基于其他容器(如`vector`、`deque`)的抽象数据类型。它们分别实现了栈、队列和优先级队列的基本操作,为程序设计者提供了更高层次的抽象,简化了代码实现。 ...
- 容器:存储数据的对象,如vector(动态数组)、list(双向链表)、deque(双端队列)和set(红黑树实现的集合)。 - 迭代器:用于遍历容器中元素的指针类,提供了前向、双向和随机访问等多种类型。 - 算法:如...
这三者紧密相连,容器存储数据,算法处理数据,而迭代器则提供了一种通用的访问机制,使得容器和算法能够无缝协作。 #### 容器 - **向量(Vector)**:提供随机访问的能力,插入和删除操作在尾部时效率较高,但在...
1. **容器(Containers)**:STL中的容器是一些可以存储数据的对象,如`vector`、`list`、`deque`、`set`和`map`等。`vector`是最常用的动态数组,它支持随机访问;`list`是双向链表,适合频繁插入和删除;`deque`...
1. **容器**:如vector、list、deque、set和map等,它们各自的特点和适用场景。例如,vector适合随机访问,而list适合频繁的插入和删除操作。 2. **迭代器**:STL的核心组件,用于遍历容器中的元素。了解其分类...
STL中的容器是用来存储对象的集合,它们按照不同的数据结构实现,如顺序容器(如vector、deque和list)和关联容器(如set、map)。例如,`vector`是一个动态数组,提供随机访问和快速插入/删除尾元素的能力;`list`...
在容器类如deque、list、string和vector中,都有相应的`assign`函数,它们用于替换容器中的元素,实现数据的初始化或更新。 对于访问容器元素的函数,如`at(deque)`、`at(string)`和`at(vector)`,它们提供了安全的...
- **简介**:`assign()`函数是多个容器类(如`deque`、`list`、`string`、`vector`)的成员函数,用于重新分配容器的大小并初始化元素。 - **参数**: - `n`:新容器的大小。 - `val`:用于初始化每个元素的值。...
第九章 顺序容器:讲解了vector、deque、list和forward_list四种顺序容器的特性和应用场景,以及如何对它们进行操作和遍历。 第十章 关联容器:介绍set、multiset、map和multimap等关联容器,它们通过键值对存储...
##### 2.4 三者比较 - **Vector**:适用于需要快速随机访问和在末尾频繁插入删除的场景。 - **List**:适用于需要在任意位置高效插入删除的场景。 - **Deque**:结合了`vector`和`list`的优点,两端都能高效操作,...
STL中的容器是用于存储数据的对象,例如vector、list、deque、set、map等。每个容器都有其特定的设计目的和性能特性。例如,`vector`是动态数组,提供随机访问但插入和删除元素的效率较低;`list`则是一个双向链表,...
1. 容器:STL提供了一系列容器类,如vector(动态数组)、list(双向链表)、deque(双端队列)、set(集合)、map(映射)等,它们用于存储和管理数据。每个容器都有其特定的特性和用途,例如vector适合快速访问和...
### C++ STL范例大全:容器部分详解 #### Vector **Vector**是C++标准模板库(STL)中的一个重要容器类型,它提供了一种动态数组...这些例子可以帮助初学者更好地理解和掌握C++ STL中的容器概念,进而提高编程效率。
其中,容器如vector、list、deque、set、map等,提供了存储和管理数据的结构;迭代器作为访问这些容器中元素的接口;算法如排序、查找、交换等,提供了高效的操作手段;函数对象(也称谓functors)则增强了函数的可...
#### 三者比较 - **性能**:在尾部插入和删除元素时,`vector`的性能最佳;在列表中的任意位置插入和删除元素时,`list`的性能最佳;`deque`则平衡了两者的优势,两端操作性能较好。 - **内存使用**:`vector`倾向...
1. **容器**:STL中的容器如vector、list、deque、set、map等,它们为数据提供存储空间。vector是动态数组,可以方便地在两端添加或删除元素;list是双向链表,适合频繁插入和删除;deque(双端队列)在两头都可以...
1. 容器:包括顺序容器(如vector、deque、list)和关联容器(如set、map),提供数据存储和操作的接口。 2. 迭代器:遍历容器元素的工具,类似于指针但更安全、功能更强大。 3. 队列与栈:queue和stack是基于容器的...
C++中的`std::stack`通常基于`std::deque`或`std::vector`实现,支持push、pop、top等基本操作。栈常用于表达式求值、回溯算法和内存管理等场景。 3. **List**:`std::list`是双向链表的实现,提供了在任何位置快速...
STL包括五大容器(vector、list、deque、set和map)、三大迭代器(input iterator、output iterator和random access iterator)、四种算法(排序、查找、变换和赋值)以及两种分配器(默认分配器和自定义分配器)。...