STL
Amumu_yy
这个作者很懒,什么都没留下…
展开
-
STL序列容器之vector
1、基本概念 我们都知道c++原生的array是静态空间,一旦分配就不可更改,如果想要扩展大小就必须自行处理。vertor在提供array功能的基础上,帮我们完成空间的扩展,让我们使用起来更加的自由。2、迭代器 vector提供的迭代器具备基本的算术运算,可随机访问vector内部的元素,因而属于随机迭代器。3、容量扩展 当vector内部的空间已经使用完后,此时再向其中添加元原创 2017-04-02 23:47:58 · 236 阅读 · 0 评论 -
STL之空间配置器
1、基本概念 空间配置器,就是用于管理容器的内存的分配与释放,而不用容器自己去处理。2、标准接口 空间配置器,根据STL的规范,是有一套统一的接口的。但是实现这些接口的空间配置器,只能有限地搭配当前各个版本的STL,因为每个版本都做了自己的特殊处理,并没有严格遵循这一接口,SGI版本的甚至自行实现了一套接口,我们要看的就是SGI版本的。3、SGI空间配置器 SGI原创 2017-07-26 09:42:10 · 212 阅读 · 0 评论 -
STL之仿函数
1、基本概念 仿函数,顾名思义,仿照函数的使用形式,但本质上是一个类模板。通过重载运算符(),通过类模板生成的模板类就可以像函数一样使用。STL设计仿函数,可以是算法采用不同的策略,从而使算法更加的灵活。2、相应型别 STL为了统一仿函数,定义了一元函数和二元函数的参数类型及返回值类型,但不支持三元函数。每个定义的仿函数对应进行继承,就可以相同的手法获得仿函数的参数类型和返回值类型。3、算术类仿原创 2017-07-09 09:57:20 · 333 阅读 · 0 评论 -
STL之算法
1、基本概念原创 2017-06-17 13:06:58 · 176 阅读 · 0 评论 -
STL之适配器(adapter)
1、基本概念 适配器, 在STL中扮演着转换器的角色,本质上是一种设计模式,用于将一种接口转换成另一种接口,从而是原本不兼容的接口能够很好地一起运作。2、基本类型 根据目标接口的类型,适配器可分为以下几类: 1. 改变容器的接口,称为容器适配器; 2. 改变迭代器的接口,称为迭代器适配器; 3. 改变仿函数的接口,称为仿函数适配器。3、容器适配器 STL的原创 2017-07-12 08:47:30 · 1732 阅读 · 0 评论 -
STL关联容器之multiset和multimap
1、基本概念 由于set和map不允许插入相同的元素,stl使用multi版本来满足这一需求,原版与multi版的特性是一致的,唯一的区别是在插入这里,这引起以下几点不同: 1. []访问。set不支持[]直接对元素进行访问,其对应的multi版也是不支持的;map支持[],但是multi版是不支持的。 2. 插入结果。multiset插入后是可以出现相同值的元素,而multimap插入原创 2017-05-15 09:32:35 · 211 阅读 · 0 评论 -
STL关联容器之map
1、基本概念 map和set一样,也是一种关联容器,内部也是使用红黑树作为底层的实现结构。但是不同的是,map的键值和实值可以是不一样的。2、查找操作 map与set的查找操作本质上是一样的,没有特殊的地方。3、插入操作 map使用键值排列元素的位置,因而也不允许插入相同键值的元素,插入算法返回pair4、删除操作 map与set的删除操作也是一样的,都是使用红黑树的算法。5、修改算法 不原创 2017-05-13 09:59:49 · 224 阅读 · 0 评论 -
STL关联容器之set
1、基本概念 关联式容器不同于序列容器,其内部的元素是按照键值和实值的形式存储的,底层结构会按照键值的大小将元素插到相应的位置。关联容器没有头尾的概念,只有最大元素和最小元素。 set就是一种关联容器,其内部使用红黑树作为底层的实现结构。同时,set的元素只有实值,set直接将元素的实值作为元素的键值。2、查找操作 set查找操作是使用红黑树的查找算法,可以达到很高效的O(logn),查找原创 2017-05-12 09:27:41 · 425 阅读 · 0 评论 -
STL算法之heap
1、基本概念 在stl中,heap并不是做成容器,而是作为算法来使用的。原创 2017-04-08 10:38:15 · 451 阅读 · 0 评论 -
STL适配器之priority_queue
1、基本概念priority_queue本质上也是一个queue,但在其基础上加入了权值的概念,入队依然是依次入队,但出队的时候却是权值最高的元素先出队,以满足一些特殊的需求。heap将极值放到头节点,可以很好的满足priority_queue的需求。默认情况下,priority_queue使用vector作为底层容器,使用max-heap进行规制处理。2、基本用法priority_queue是在原创 2017-04-08 16:52:18 · 229 阅读 · 0 评论 -
STL适配器之queue
1、基本概念 queue是一种先进先出的数据结构,要求只能从一端插入数据,从另一端移除数据,跟stack一样,也是在底层容器的基础上实现的,是一种容器适配器。2、迭代器 queue也不提供遍历元素的功能,因而也提供迭代器。3、底层容器 queue使用empty、size、front、back、push_back、pop_front这些底层容器的接口,传入的底层容器必须支持这些接原创 2017-04-06 09:08:51 · 315 阅读 · 0 评论 -
STL适配器之stack
1、基本概念 stack是一种先进后出的数据结构,要求数据只能从顶端插入、删除和访问。stack是在底层容器的基础上实现的,内部都是调用容器的接口,但对外却提供约束性的新接口,因而严格来说stack并不算是一个容器,而是一种容器适配器。2、迭代器 stack只允许在顶端进行数据的操作,因而并不提供遍历的功能,也不提供迭代器。3、底层容器 stack的底层容器使用的是模板参数,内原创 2017-04-06 08:27:16 · 271 阅读 · 0 评论 -
STL序列容器之deque
1、基本概念 deque是双向开口的序列空间,可在常数时间内在头尾两段插入和删除元素,相比vector要高效很多。同时,deque没有容量的概念,其内部是以分段的连续空间组合而成的。就我看来,deque是vector和list的折中状态,兼和了vector的快速访问和list的空间动态增长,能够适应更加特殊的需求。2、设计思路 deque在内部使用一小块连续空间的map作为控制器,其中原创 2017-04-04 16:27:00 · 374 阅读 · 0 评论 -
STL序列容器之list
1、基本概念 相比vector的连续线性空间,list的内部空间是不连续的。STL的list实现是一个双向链表,因而其每个元素必须包含一个指向前一个节点的指针和一个指向后一个节点的指针。优点是插入和删除的代价比vector低的多,同时占用空间需要多少创建多少,空间利用率高;缺点是维护额外的指针需要消耗一定的空间。 2、迭代器 list提供的迭代器能够向前和向后访问,但无法原创 2017-04-03 23:02:08 · 261 阅读 · 0 评论 -
STL之迭代器
1、基本概念 迭代器,是一种抽象的设计模式,主要是提供一种方法,使之能够依序巡防某个聚合物所含的各个元素,而又无需暴露该聚合物的内部表述方式。STL想要将容器和算法分开,达到泛化的目的,就需要迭代器作为其中的胶着剂。原创 2017-08-07 08:53:42 · 377 阅读 · 0 评论