STL分配器(allocator)

allocator代表一种特定内存模型,并提供一种抽象概念,将对内存的索求最终转变为对内存的直接调用。可以自己实现一个分配器。allocator:使内存分配和构造分离,提高性能;销毁内存和析构分离:提高性能,内存可重用例子:new string[100],意味着要执行100次string类的默认构造函数,哪怕后面的用不到!同样析构也会需要执行100次!可以通过alloca...
摘要由CSDN通过智能技术生成

allocator代表一种特定内存模型,并提供一种抽象概念,将对内存的索求最终转变为对内存的直接调用。

可以自己实现一个分配器。

 

allocator:使内存分配和构造分离,提高性能;销毁内存和析构分离:提高性能,内存可重用;在需要对象的时候再进行构造

例子:

new string[100],意味着要执行100次string类的默认构造函数,哪怕后面的用不到!同样析构也会需要执行100次!

可以通过allocator来实现分离,代码如下:

#include<iostream>
#include<string>
#include<vector>
#include<memory>

using namespace std;

int main()
{
	allocator<string> nAllocator;
	string* const p = nAllocator.allocate(10);
	string* q = p;
	nAllocator.construct(q++);
	nAllocator.construct(q++,5,'A');
	nAllocator.construct(q++,"ABC");

	while (q != p)
	{
		nAllocator.destroy(--q);
	}
	nAllocator.deallocate(p, 10);


	cout << "----------------------------" << endl;
	vector<string> vec = { "1","12","23","34&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值