Namespaces
Variants

std::pmr:: polymorphic_allocator

From cppreference.net
Memory management library
( exposition only* )
Allocators
pmr::polymorphic_allocator
(C++17)
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until 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
(公开成员函数)
(destructor)
(implicitly declared)
隐式声明的析构函数
(公开成员函数)
operator=
[deleted]
复制赋值运算符被删除
(公开成员函数)
公开成员函数
分配内存
(公开成员函数)
释放内存
(公开成员函数)
在已分配存储中构造对象
(公开成员函数)
(deprecated in C++20) (undeprecated in C++26)
销毁已分配存储中的对象
(公开成员函数)
从底层资源分配原始对齐内存
(公开成员函数)
释放通过 allocate_bytes 获取的原始内存
(公开成员函数)
分配适用于对象或数组的原始内存
(公开成员函数)
释放通过 allocate_object 获取的原始内存
(公开成员函数)
(C++20)
分配并构造对象
(公开成员函数)
销毁并释放对象
(公开成员函数)
创建新的 polymorphic_allocator 供容器复制构造函数使用
(公开成员函数)
返回指向底层内存资源的指针
(公开成员函数)

非成员函数

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

注释

polymorphic_allocator 在容器复制赋值、移动赋值或交换时不会传播。因此,使用 polymorphic_allocator 的容器进行移动赋值操作可能抛出异常,且当两个使用 polymorphic_allocator 的容器的分配器比较不相等时,交换这两个容器会导致未定义行为。

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

另请参阅

封装内存资源的抽象接口类
(类)