STL提供了三个顺序容器:vector、list和deque。Vector和deque都是用数组来实现的,list是用链表来实现的。关于三者的实现原理和各自应用的场景我们做一下分析。
1.vector就是动态数组,它是在堆中分配内存,如果vector中元素个数大于当前大小时,就会再分配内存。它拥有一段连续的内存空间,并且起始地址不变,因此它能很好地支持随机访问元素,即[ ]操作符。vector对...
分类:
其他好文 时间:
2015-08-18 10:21:15
阅读次数:
164
不多说,看代码#include #include #include #include #include #include "ContainerTest.h"#include "ContainerUtil.h"using namespace std;void ContainerTest::run(){...
分类:
其他好文 时间:
2015-08-17 18:53:48
阅读次数:
111
顺序容器总结:array:固定大小的数组,支持快速访问,不能添加和删除元素vector:动态数组,支持快速访问,但在尾部之外插入或删除元素会很慢string:与vector相似的容器,用于保存字符deque:双向队列,支持快速随机访问,在头尾位置插入元素速度很快list:双向链表,支持双向访问,在链...
分类:
其他好文 时间:
2015-08-15 19:51:30
阅读次数:
228
vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。
vector的扩充机制:按照容器现在容量的一倍进行增长。vector容器分配的是...
分类:
其他好文 时间:
2015-08-11 10:07:42
阅读次数:
95
ng_queue_t是Nginx提供的一个顺序容器,它以双向链表的方式将数据组织在一起。
链表作为顺序容器的优势在于,它可以高效的执行插入、删除、合并等操作,在移动链表中的元素时只需要修改指针的指向,因此,它很适合频繁修改容器的场合。
相对于其他顺序容器,它的优势有以下三点:
(1) 实现了排序功能,采用额是插入排序,虽然不太适合超大规模数据的排序,但是简单实用。
(2) 它非常轻...
分类:
其他好文 时间:
2015-08-10 22:26:02
阅读次数:
166
根据写博客开始总有一些事情的习惯,加鸡汤文,今天请原谅我记得。=============================================今天要写的内容是顺序型容器。首先,标准库定义了三种顺序容器类型:vector,list和deque(双端队列),这篇博客介绍的是vector容器。首...
分类:
编程语言 时间:
2015-08-08 19:40:26
阅读次数:
153
顺序容器: vector 支持快速随机访问 list 支持快速随机插入删除 deque 双端队列容器适配器:通过原有的容器类型定义新的接口 stack:后进先出 queue:先进先出 priority_queue:有优先级管理的队列顺序容器的定义:
分类:
其他好文 时间:
2015-08-07 18:49:37
阅读次数:
94
参考《21天学通C++》第23与第24章节,对STL算法与自适应容器进行介绍。
实际上在前面的STL顺序容器、关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数。而自适应容器是在顺序容器的基础上按照stack、queue的性质进行定制实现的。所以,本篇博文将言简意赅地总结出需要掌握的纲要。
一、STL算法
查找、搜索、删除、计数、排序等都是一些通用算法,STL通过模板函数提供了这些...
分类:
编程语言 时间:
2015-08-06 15:11:40
阅读次数:
186
1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。
注意:vector动态增加大小时,并不是在原空间之后持续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然...
分类:
编程语言 时间:
2015-08-06 11:11:45
阅读次数:
192
下面是选择顺序容器类型的一些准则
1、 如果我们需要随机访问一个容器则vector要比list好得多 。
2、 如果我们已知要存储元素的个数则vector 又是一个比list好的选择。
3、如果我们需要的不只是在容器两端插入和删除元素则list显然要比vector好
4、除非我们需要在容器首部插入和删除元素否则vect...
分类:
其他好文 时间:
2015-07-29 23:07:48
阅读次数:
162