std::allocator

1、什么是std::allocator。

std::allocator是C++中将内存分配与构造初始化分离开的类。在类中封装了方法,使得操作内存变得更容易。头文件是<memory>

2、allocator中封装的方法:

allocator的API
allocator<T> t实例化一个分配T类型的allocator对象
t.allocator(n)分配一段原始的、未构造的内存,保存n个类型的对象。
t.deallocator(p,n)  释放类型T*的p中开始的内存,这块内存保存了n个T*类型的对象,其n必须与先前调用allocator时的n相同,其p的类型也必须是allocator返回的指针,在调用deallocator之前必须调用每个在这块内存块创建的对象的析构函数。
t.construct(p,args)p必须是T*类型的指针,args被传递给类型T*的构造函数,意在给p指向的内存构造对象。
t.destroy(p)p必须是T*类型的指针,给p指向的内存块进行析构。

3、allocator的伴随算法:

allocator的伴随算法
uninitialized_copy(iteratorFirst,iteratorLast,alloc);从迭代器指定的范围中拷贝元素到alloc指定的为构造的原始内存中并且内存要足够大。
uninitialized_copy_n(iteratorFirst,n,alloc);从迭代器中拷贝n个元素到alloc指定的内存中。
uninitialized_fill(allocFirst, allocLast, value);在迭代器的范围内创建对象,对象为value。
uninitialized_fill_n(allocFirst, n, value);在迭代器中创建n个值为value的对象。

4、allocator与new的区别

(1)allocator:分配内存。

(2)new:分配内存,初始化内存。

总结:allocator比new速度快。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值