命名空间
变体
操作

std::pmr::polymorphic_allocator

来自 cppreference.com
< cpp‎ | memory
 
 
动态内存管理
未初始化内存算法
受约束的未初始化内存算法
分配器
垃圾回收支持
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)
(C++11)(直到 C++23)



 
 
定义于头文件 <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 是一个 分配器,它根据其构造的 std::pmr::memory_resource 表现出不同的分配行为。由于 memory_resource 使用运行时多态来管理分配,因此具有 polymorphic_allocator 作为其静态分配器类型的不同容器实例是可互操作的,但行为就像它们具有不同的分配器类型一样。

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

polymorphic_allocator::construct 成员函数执行 使用分配器构造,以便使用 polymorphic_allocator 的容器的元素将使用相同的分配器进行自己的分配。例如,一个 std::pmr::vector<std::pmr::string> 将为 vector 的存储和每个 string 的存储使用相同的 memory_resource

对于非多态分配器,可以使用 std::scoped_allocator_adaptor 来实现类似的传播。

内容

[编辑] 成员类型

成员类型 定义
value_type T

[编辑] 成员函数

构造一个 polymorphic_allocator
(公共成员函数) [编辑]
(析构函数)
(隐式声明)
隐式声明的析构函数
(公共成员函数) [编辑]
operator=
[已删除]
复制赋值运算符已删除
(公共成员函数) [编辑]
公共成员函数
分配内存
(公共成员函数) [编辑]
释放内存
(公共成员函数) [编辑]
在分配的存储空间中构造对象
(公共成员函数) [编辑]
(在 C++20 中已弃用)(在 C++26 中未弃用)
销毁分配的存储空间中的对象
(公共成员函数) [编辑]
从底层资源分配原始对齐内存
(公共成员函数) [编辑]
释放通过 allocate_bytes 获取的原始内存
(公共成员函数) [编辑]
分配适合对象或数组的原始内存
(公共成员函数) [编辑]
释放通过 allocate_object 获取的原始内存
(公共成员函数) [编辑]
分配并构造对象
(公共成员函数) [编辑]
销毁并释放对象
(公共成员函数) [编辑]
为容器的复制构造函数创建一个新的 polymorphic_allocator
(公共成员函数) [编辑]
返回指向底层内存资源的指针
(公共成员函数) [编辑]

[编辑] 非成员函数

(C++20 中已移除)
比较两个 polymorphic_allocator
(函数) [编辑]

[编辑] 注释

polymorphic_allocator 不会在容器复制赋值、移动赋值或交换时传播。因此,使用 polymorphic_allocator 的容器的移动赋值可能会抛出异常,而交换两个使用 polymorphic_allocator 的容器(其分配器不相等)会导致未定义行为。

功能测试 Std 功能
__cpp_lib_polymorphic_allocator 201902L (C++20) std::pmr::polymorphic_allocator<> 作为词汇类型

[编辑] 另请参见

封装内存资源的类的抽象接口
(类) [编辑]