STL源码剖析笔记

STL源码剖析笔记

ID:41122127

大小:3.42 MB

页数:166页

时间:2019-08-16

STL源码剖析笔记_第1页
STL源码剖析笔记_第2页
STL源码剖析笔记_第3页
STL源码剖析笔记_第4页
STL源码剖析笔记_第5页
资源描述:

《STL源码剖析笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第1章STL概论1.2STL六大组件STL提供六大组件,彼此可以组合套用:1.容器(container):各种数据结构,如vector,list,deque,set,map等2.算法(algorithm):各种常用算法如sort,search,copy,erase......3.迭代器(iterator):扮演容器与算法之间的胶着剂。所以STL容器都附带有自己专属的迭代器。指针也是一种迭代器。4.仿函式(functors):行为类似函数,可作为算法的某种策略,从实现的角度讲,仿函式是一种重载了operator()的class或classtemplate。仿函式是

2、否就是c++primer中的函数对象?5.适配器(adaptor):一种用来修饰容器或仿函式或迭代器接口的东西,有functionadaptor,containeradaptor,iteratoradaptor。6.分配器(allocator):负责空间分配与管理。1.7STLport版本STLport版本是以SGISTL为蓝本的高度可移植性版本。第2章空间分配器2.1空间配置器的标准接口根据STL规范,以下是allocator的必要接口:第一组:各种type类型//以下各种type的设计原由,第三章详述。allocator::value_typeallocat

3、or::pointerallocator::const_pointerallocator::referenceallocator::const_referenceallocator::size_typeallocator::difference_type第二组:构造与析构函数Allocator::rebind一个嵌套的(nested)classtemplate。classrebind拥有唯一成员other,那是一个typedef,代表allocator。allocator::allocator()---默认构造函数allocator::allocat

4、or(constallocator&)---拷贝构造函数templateallocator::allocator(constallocator&)---泛化的拷贝构造函数allocator::~allocator()---默认的析构函数第三组:取地址函数pointerallocator::address(referencex)const---传回某个对象的地址,算式a.address(x)等同于&x。const_pointerallocator::address(const_referencex)const---传回某个const对象的地址

5、,算式a.address(x)等同于&x。第四组:空间分配与释放pointerallocator::allocate(size_typen,cosntvoid*=0)---配置空间,足以储存n个T对象。第二自变量是个提示。实作上可能会利用它来增进区域性(locality),或完全忽略之。voidallocator::deallocate(pointerp,size_typen)---归还先前分配的空间。size_typeallocator::max_size()const---传回可成功分配的最大量。第五组:construct和destroy函数voidallo

6、cator::construct(pointerp,constT&x)---等同于new((constvoid*)p)T(x)。voidallocator::destroy(pointerp)---等同于p->~T()。2.1.1设计一个空间配置器JJ::allocator在书中,侯捷先生写了一个分配器JJ::allocator。代码见书。2.2具备sub-alloction的SGIallocatorSGISTL配置器与标准规范不同,其名称是alloc而非allocator,而且不接受任何自变量。如果要在程序中使用SGISTL配置器,则不能采用标准写法:Vect

7、or>iv;//在vc或c++builder中这么写Vectoriv;//在GCC中这么写但是令人欣慰的是,我们通常使用预设的空间配置器,很少需要自行指定配置器,而SGISTL的每一个容器都已经指定其预设的空间配置器为alloc。2.2.1SGI标准的空间配置器std::allocator该配置器符号部分标准,但效率差,SGI自己不用,也不建议我们使用。2.2.2SGI特殊的空间配置器std::alloc看下面的代码:ClassFoo{......}Foo*of=newFoo;//配

8、置内存,然后构造对象De

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。