STL标准模板库作为C++标准库的一部分,其组件包括:容器、算法、迭代器、仿函数、配接器、配置器。
今天来说说容器,容器主要可以分为两种:序列式容器(元素是可序的,但并非有序)、关联式容器。
一、序列式容器
1、vector
1)vector和C/C++的内置数组类似,只不过array空间是静态的,vector的空间则是可以改变的,当元素个数达到空间上...
分类:
其他好文 时间:
2015-07-29 23:10:38
阅读次数:
255
LeetCode 之 Subsets,本文给出基于图的深度优先检索的算法思想与C++ STL源码实现。...
分类:
其他好文 时间:
2015-07-29 12:17:24
阅读次数:
115
LeetCode 之 Search for a Range,本文给出基于二分查找的算法思想与C++ STL源码实现。...
分类:
其他好文 时间:
2015-07-28 16:01:45
阅读次数:
117
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list 内部为双向链表,内部元素互相以link串接起来,每个元素都知道其前一个元素以及下一个元素的位置。template
struct _...
分类:
其他好文 时间:
2015-07-27 13:16:10
阅读次数:
130
空间配置器(allocator)
空间配置器按我的理解就是C++ STL进行内存管理的组件(包括内存的申请和释放);当然,不只是内存,还可以向硬盘申请空间;
我主要看了内存的配置与释放(这里“配置”就应该是“申请”的意思)。STL对此设计的哲学主要包括以下四个方面:
1、向系统堆空间申请内存空间
2、考虑了多线程的情况下的申请;
3、考虑内存不足的应变措施;
4、考虑过多“小型区块”的内存碎片的问...
分类:
其他好文 时间:
2015-07-19 10:12:24
阅读次数:
123
一般写小代码时,常常是c和c++不分的,但是有时会遇到类型转换的问题,比如输入 string ,然而处理函数的参数是char*型,之间需要转换。收集一下网上资料,总结一下。因为还没有时间去研究stl源码,暂时先用着吧。
一、string转char*
1、std::string::c_str
Returns a pointer to an array that contains a null-t...
分类:
编程语言 时间:
2015-07-10 15:22:40
阅读次数:
113
花了两天时间略读了一下《stl源码分析》,看了个大体,对于细节并没有深究。之所以想翻翻这本书,主要是想看看stl中的特性、适配器的具体实现。看完之后收获还是蛮大的,模板的各种组合让我眼前一亮,下面大概总结一些内容。 1.内存分配:sgi内存分配采用两级实现,对于大内存块的申请(大于128k)由...
分类:
其他好文 时间:
2015-07-08 20:31:44
阅读次数:
140
在看侯捷翻译的STL源码剖析时,发现关于heap这一节点错误,特此指出.
1 make_heap源码
template
inline void
make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
{
__make_heap(__first, __last,
__...
分类:
其他好文 时间:
2015-07-04 12:47:35
阅读次数:
114
本文章是笔者学习《STL源码剖析》的学习笔记,记录的是笔者的个人理解,因为个人的水平有限,难免会有理解不当的地方,而且该书出版的时间比较久,难免会有些不一样。如有不当,欢迎指出。 vector是c++中经常用到的数据结构,而且在面试时也会有提及,因此了解vector很重要。 一说到vecto...
分类:
编程语言 时间:
2015-06-28 22:46:41
阅读次数:
226
容器是很多人对STL的第一印象,vector,stack,queue,set,map等等都是容器。
这里先介绍 STL中的序列式容器。
所谓序列式容器,其中的元素可序(ordered),但未必有序(sorted)。C++ 本身提供了一个序列式容器——数组(array),STL中还提供了向量(vector),链表(list),堆栈(stack),队列(queue),优先队列(priorit...
分类:
其他好文 时间:
2015-06-19 16:51:52
阅读次数:
101