![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL源码剖析学习
文章平均质量分 89
lcf枫
shopee 后台开发
展开
-
STL概论
STL概论一开始看源码剖析首先看到组态很困惑,后来仔细看原来是configuration,也就是配置的意思。STL应该从编译器支持模板的哪些功能看起,毕竟STL就是标准模板库。否则在看源代码的时候就会在#ifdef #endif 等宏中纠结不定。配置相关相关的宏都定义在了stl_config.h里面// Flags:// * __STL_NO_BOOL: defined if t原创 2017-09-26 17:15:02 · 319 阅读 · 0 评论 -
空间配置器
空间配置器allocator有标准的接口,SGI为了实现优化,并没有按照标准接口来实现。但是并不会造成大的影响。在实现中为容器配置了SGI的allocator。并且实现了标准的接口,以便用户使用。具备次配置力(sub-allocation)的SGI空间配置器SGI STL的配置器与众不同,也与标准规范不同,其名称是allor而非allocator,而且不接受任何参数。换句话说,如果你要原创 2017-09-26 17:16:20 · 280 阅读 · 0 评论 -
迭代器(iterator) 与traits编程
迭代器(iterator) 与traits编程迭代器(iterators)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物 Design Patterns一书提供有23个设计模式(design patterns )的完整描述,其中iterator模式定义如下:提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。不原创 2017-09-26 17:18:10 · 294 阅读 · 0 评论 -
序列容器
序列容器 (Squence containers)容器:容纳器物的场所。STL里面的容器自然指的是容纳对象的场所了。上图为STL内容器的分类,两大类。序列式容器和关联式容器。上面有递进的图表格式,表示的是包含的关系。比如heap的底层实现是vector。而priority-queue则依托于heap。stack,queue内含了deque。源码就是转调的关系,是adapte原创 2017-10-09 08:59:17 · 398 阅读 · 0 评论 -
序列容器之Deque
序列容器之Dequevector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空间。所谓双向开口,意思是可以在头尾两端分别做元素的插人和删除操作,如图所示。deque的迭代器也是Random Access Iterator。设计比较复杂。deque和vector的最大差异,一在于deque允许于常数时间内对起头端进行元素的插入或移除操作,二在于deque没有所谓原创 2017-10-09 09:01:10 · 271 阅读 · 0 评论 -
序列容器之 heap
序列容器之 heapheap并不归属于STL容器组件,它是个幕后英雄,扮演priority queue ( 4.8节)的助手。顾名思义,priority queue允许用户以任何次序将任何元素推入容器内,但取出时一定是从优先权最高(也就是数值最高)的元素开始取。binary max heap正是具有这样的特性,适合作为priority queue的底层机制。因为优先队列是每次取原创 2017-10-09 09:02:35 · 199 阅读 · 0 评论