C++ 参考手册

位置:首页 > C++ 参考手册 >动态内存管理 > std::pmr::polymorphic_allocator

定义于头文件 <memory_resource>
template< class T >
class polymorphic_allocator;
(C++17 起)
(C++20 前)
template< class T = std::byte >
class polymorphic_allocator;
(C++20 起)

类模板 std::pmr::polymorphic_allocator 是一个分配器 (Allocator) ,其分配行为依赖其构造所用的 memory_resource 。从而 polymorphic_allocator 的不同实例能展现出完全不同的分配行为。这种运行时多态允许使用 polymorphic_allocator 的对象表现如同它们在运行时使用不同的分配器类型,尽管静态分配器类型相同。

polymorphic_allocator 的所有特化均满足分配器完整性要求

成员类型

 
成员类型 定义
value_type T

成员函数

构造一个 polymorphic_allocator
(公开成员函数)
(析构函数)
(隐式声明)
隐式声明的析构函数
(公开成员函数)
operator=
[被删除]
复制赋值运算符被删除
(公开成员函数)
公开成员函数
分配内存
(公开成员函数)
解分配内存
(公开成员函数)
在分配的存储上构造一个对象
(公开成员函数)
销毁处于分配的内存的对象
(公开成员函数)
从底层资源分配未处理的对齐内存
(公开成员函数)
释放从 allocate_bytes 获得的未处理内存
(公开成员函数)
分配适合单个对象或数组的未处理内存
(公开成员函数)
释放由 allocate_object 获得的未处理内存
(公开成员函数)
分配并创建对象
(公开成员函数)
销毁并解分配对象
(公开成员函数)
为容器的复制构造函数的使用创建一个新的 polymorphic_allocator
(公开成员函数)
返回指向底层 memory_resource 的指针
(公开成员函数)

非成员函数

(C++20 中移除)
比较二个 polymorphic_allocator
(函数)

注意

polymorphic_allocator 在容器复制赋值、移动赋值或交换时不传播。结果是,使用 polymorphic_allocator 的容器的移动赋值可能抛出,且交换二个使用 polymorphic_allocator ,而所用分配器比较不相等的容器导致未定义行为。

参阅

一个抽象接口,用于各种封装内存资源的类
(类)