LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1016|回复: 3

allocator 是什么意思?

[复制链接]
发表于 2004-5-27 23:28:33 | 显示全部楼层 |阅读模式
C++ Primer 里的:
#include <vector>
vector <string , allocator> vec ;
我只能从字面上猜测和内存分配有些关系。
发表于 2004-5-28 00:16:22 | 显示全部楼层
就是“分配器”,vector有默认的分配器,你也可以用自己的代替

摘录一段(来自:http://www.royaloo.com/misc/other/alex_cn.htm )
人们希望容器独立於内存模式,这有点过份,因为语言本身并没有包括内存模式。所以我们得要想出一些机制来抽象内存模式。在STL的早期版本里,我们假定容器的容积可以用size_t类型来表示,迭代子之间的距离可以用ptrdiff_t来表示。现在有人对我们说,你为什麽不抽象的定义这些类型?这个要求比较高,连语言本身都没有抽象定义这些类型,而且C/C++数组还不能被这些类型定义所限定。我们发明了一个机制称作"allocator",封装了内存模式的信息。这个机制深刻地影响了库中间的每一个组件。你可能疑惑:内存模式和算法或者容器类接口有什麽关系?事实上如果你使用size_t这样的东西,你就无法使用 T* 对象,因为存在不同的指针类型(近指针 远指针 巨指针等等)。你也就不能使用引用,因为内存模式不同的话,会产成不同的引用类型。这样,为了实用,标准库一定会产生庞大的分支。
 楼主| 发表于 2004-5-28 07:33:10 | 显示全部楼层
STL 把内存管理也包办了。
不过 STL 用起来挺爽的。
发表于 2004-5-31 13:13:47 | 显示全部楼层
一般情况下不用考虑它,除非你写自己的分配器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表