命名空间
变体
操作

std::experimental::pmr::resource_adaptor, std::pmr::experimental::resource_adaptor

来自 cppreference.com
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行扩展 (并行 TS)
并行扩展 2 (并行 TS v2)
并发扩展 (并发 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
在头文件 <experimental/memory_resource> 中定义
template< class Alloc >

using resource_adaptor = /*resource-adaptor-imp*/<
                             typename std::allocator_traits<Alloc>::

                             template rebind_alloc<char>>;
(库基础 TS)
template< class Alloc >
class /*resource-adaptor-imp*/ : public memory_resource; // for exposition only
(库基础 TS)

别名模板 resource_adaptor 将分配器类型 Alloc 适配为 memory_resource 接口。分配器在实际适配之前会重新绑定为 char 值类型(使用 resource-adaptor-imp 类模板),以便无论分配器模板最初实例化的值类型是什么,适配相同分配器模板的特殊化总是产生相同类型。

resource_adaptor 在命名空间 std::experimental::pmr 中定义,本页中的基类型 memory_resorcestd::experimental::pmr::memory_resource.

(库基础 TS)
(直到库基础 TS v3)

resource_adaptor 在命名空间 std::pmr::experimental 中定义,本页中的基类型 memory_resorcestd::pmr::memory_resource.

(库基础 TS v3)

resource-adaptor-imp 是一个类模板,其成员在下面描述。resource-adaptor-imp 这个名称仅用于说明目的,并非规范性的。

除了满足 Allocator 要求之外,Alloc 还必须满足以下要求

[编辑] resource-adaptor-imp 的成员类型

成员类型 定义
allocator_type Alloc

[编辑] resource-adaptor-imp 的成员函数

resource-adaptor-imp::resource-adaptor-imp

/*resource-adaptor-imp*/() = default;
(1) (库基础 TS)
/*resource-adaptor-imp*/(const /*resource-adaptor-imp*/& other)
    = default;
(2) (库基础 TS)
/*resource-adaptor-imp*/(/*resource-adaptor-imp*/&& other)
    = default;
(3) (库基础 TS)
explicit /*resource-adaptor-imp*/(const Alloc& a2);
(4) (库基础 TS)
explicit /*resource-adaptor-imp*/(Alloc&& a2);
(5) (库基础 TS)
1) 默认构造函数。默认构造包装的分配器。
2) 复制构造函数。从 other 包装的分配器复制构造包装的分配器。
3) 移动构造函数。从 other 包装的分配器移动构造包装的分配器。
4) 使用 a2 初始化包装的分配器。
5) 使用 std::move(a2) 初始化包装的分配器。

参数

other - 另一个 resource-adaptor-imp 对象,用于从中复制或移动
a2 - 另一个 Alloc 对象,用于从中复制或移动

resource-adaptor-imp::get_allocator

allocator_type get_allocator() const;
(库基础 TS)

返回包装的分配器的副本。

resource-adaptor-imp::operator=

/*resource-adaptor-imp*/& operator=(const /*resource-adaptor-imp*/& other)
    = default;
(库基础 TS)

默认复制赋值运算符。从 other 的包装分配器复制赋值包装的分配器。

resource-adaptor-imp::do_allocate

protected:
virtual void* do_allocate(std::size_t bytes, std::size_t alignment);
(库基础 TS)

使用包装的分配器的 allocate 成员函数分配内存。

resource-adaptor-imp::do_deallocate

protected:
virtual void do_deallocate(void *p, std::size_t bytes, std::size_t alignment);
(库基础 TS)

使用包装的分配器的 deallocate 成员函数释放 p 指向的存储空间。

p 必须使用与包装的分配器相等的分配器的 allocate 成员函数分配,并且不能随后被释放。

resource-adaptor-imp::do_is_equal

protected:
virtual bool do_is_equal(const memory_resource& other) const noexcept;
(库基础 TS)

pdynamic_cast<const /*resource-adaptor-imp*/*>(&other)。如果 p 是空指针值,则返回 false。否则,返回使用 operator== 比较 *p*this 所包装的分配器的结果。