std::pmr::polymorphic_allocator

来自cppreference.com
< cpp‎ | memory
 
 
动态内存管理
智能指针
(C++11)
(C++11)
(C++11)
(C++17 前)
(C++11)
(C++23)
分配器
pmr::polymorphic_allocator
(C++17)
内存资源
未初始化存储
未初始化内存算法
受约束的未初始化内存算法
垃圾收集支持
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
杂项
(C++20)
(C++11)
(C++11)
C 库
低层内存管理
 
 
定义于头文件 <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) ,展现出取决于其构造所用的 std::pmr::memory_resource 的不同的分配行为。因为 memory_resource 使用运行时多态管理分配器,不同的以 polymorphic_allocator 为其静态分配器类型的分配器可互操作,但能表现为如同它们拥有不同的分配器类型。

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

成员类型

成员类型 定义
value_type T

成员函数

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

非成员函数

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

注解

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

参阅

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