- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
该配置器符号部
您可能关注的文档
最近下载
- 北师大版-数学-五年级上册-《多边形的面积》单元分析.doc VIP
- 新高考背景下历史课程教学改革探索教学研究课题报告.docx
- 2023-2024学年四川省成都市锦江区八年级(下)期末数学试卷(1).doc VIP
- DL T 1144-2012《火电工程项目质量管理规程》.pdf VIP
- 教科版六年级科学上册全册必背知识点知识清单.pdf VIP
- 《孩子是春天的另一种姿势》阅读练习及答案.doc VIP
- 2022-2023学年四川省成都市锦江区八年级(上)期末数学试卷.docx VIP
- T_CVMA 224-2025 猫传染性腹膜炎诊断规程.pdf VIP
- T_CVMA 232-2025 猪星状病毒五型荧光PCR检测方法.docx VIP
- T_CVMA 252-2025 马四肢X线及超声操作规范.pdf VIP
文档评论(0)