STL源码析笔.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STL概论 1.2 STL六大组件 STL提供六大组件,彼此可以组合套用: 容器(container):各种数据结构,如vector,list,deque,set,map等 算法(algorithm):各种常用算法如sort,search,copy,erase...... 迭代器(iterator):扮演容器与算法之间的胶着剂。所以STL容器都附带有自己专属的迭代器。指针也是一种迭代器。 仿函式(functors):行为类似函数,可作为算法的某种策略,从实现的角度讲,仿函式是一种重载了operator()的class或class template。仿函式是否就是c++primer中的函数对象? 适配器(adaptor):一种用来修饰容器或仿函式或迭代器接口的东西,有function adaptor,container adaptor,iterator adaptor。 分配器(allocator):负责空间分配与管理。 1.7 STLport版本 STLport版本是以SGI STL为蓝本的高度可移植性版本。 第2 章 空间分配器 2.1 空间配置器的标准接口 根据STL规范,以下是allocator的必要接口: 第一组:各种type类型 //以下各种 type 的设计原由,第三章详述。 allocator::value_type allocator::pointer allocator::const_pointer allocator::reference allocator::const_reference allocator::size_type allocator::difference_type 第二组:构造与析构函数 Allocator::rebind 一个嵌套的(nested)class template。class rebindU拥有唯一成员other, 那是一个typedef,代表allocatorU。 allocator::allocator()---默认构造函数 allocator::allocator(const allocator)---拷贝构造函数 template class Uallocator::allocator(const allocatorU) --- 泛化的拷贝构造函数 allocator::~allocator()---默认的析构函数 第三组:取地址函数 pointer allocator::address(reference x) const ---传回某个对象的地址,算式a.address(x)等同于x。 const_pointer allocator::address(const_reference x) const --- 传回某个const对象的地址,算式a.address(x)等同于x。 第四组:空间分配与释放 pointer allocator::allocate(size_type n, cosnt void* = 0) --- 配置空间,足以储存n个T对象。第二自变量是个提示。实作上可能会利用它来增进区域性(locality),或完全忽略之。 void allocator::deallocate(pointer p, size_type n) ---归还先前分配的空间。 size_type allocator::max_size() const --- 传回可成功分配的最大量。 第五组:construct和destroy函数 void allocator::construct(pointer p, const T x) --- 等同于new((const void*) p) T(x)。 void allocator::destroy(pointer p) --- 等同于p-~T()。 2.1.1 设计一个空间配置器JJ::allocator 在书中,侯捷先生写了一个分配器JJ::allocator。代码见书。 2.2 具备sub-alloction的SGI allocator SGI STL配置器与标准规范不同,其名称是alloc而非allocator,而且不接受任何自变量。如果要在程序中使用SGI STL配置器,则不能采用标准写法: Vectorint, std::allocatorint iv;//在vc或c++ builder中这么写 Vectorint, std::alloc iv; //在GCC中这么写 但是令人欣慰的是,我们通常使用预设的空间配置器,很少需要自行指定配置器,而SGI STL的每一个容器都已经指定其预设的空间配置器为alloc。 2.2.1 SGI 标准的空间配置器std::allocator 该配置器符号部

文档评论(0)

mv2323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档