c++库学习之分配器std::allocator的理解
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Mar
·
std::allocator定义于头文件 <memory>,是一个模板类,其定义如下:
template< class T >
struct allocator;
这个类用于分配和释放内存空间,是一个内存管理的类。
此模板类的基本信息,列举如下
成员类型

成员函数

一个简单的例子
#include <memory>
#include <iostream>
#include <string>
int main()
{
std::allocator<int> a1; // 实例化一个a1的类对象,它是int 的默认分配器
int* a = a1.allocate(1); // 类对象a1开辟一个 int 的空间
a1.construct(a, 7); // 类对象a1给 int指针赋值7
std::cout << a[0] << '\n';
a1.deallocate(a, 1); // 类对象a1解分配一个 int 的空间
// string 的默认分配器
std::allocator<std::string> a2;
// 2 个 string 的空间
std::string* s = a2.allocate(2);
a2.construct(s, "foo");
a2.construct(s + 1, "bar");
std::cout << s[0] << ' ' << s[1] << '\n';
a2.destroy(s);
a2.destroy(s + 1);
a2.deallocate(s, 2);
}
输出:
7
foo bar
更多推荐
所有评论(0)