Skip to content

Latest commit

 

History

History
94 lines (72 loc) · 5.37 KB

polymorphic_allocator.md

File metadata and controls

94 lines (72 loc) · 5.37 KB

polymorphic_allocator

  • memory_resource[meta header]
  • class[meta id-type]
  • std::pmr[meta namespace]
  • cpp17[meta cpp]
namespace std::pmr {
  template <class Tp>
  class polymorphic_allocator;    //C++17

  template <class Tp = byte>
  class polymorphic_allocator;    //C++20
}
  • byte[link /reference/cstddef/byte.md]

概要

polymorphic_allocatorは任意のmemory_resource実装によりメモリ確保・解放戦略に関わる実際の処理を動的に切り替えることのできるアロケータである。この様な設計は一般にStrategyパターンというデザインパターンの一つとして知られている。
このクラスとmemory_resourceの利用により、同じ静的型polymorphic_allocator<Tp>で実行時に異なるメモリの確保・解放戦略をとるアロケータの利用が可能になる。

C++20にてC++プログラミングにおいての基礎部品となる型(vocabulary type)となるように改修され、polymorphic_allocator<>の形で幅広く利用できるようになった。

メンバ関数

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++17
operator=(const polymorphic_allocator& rhs) = delete; コピー代入演算子(コピー禁止) C++17

メモリ確保・解放のみを行う関数

名前 説明 対応バージョン
allocate Tpの指定した要素数分のメモリを確保する C++17
deallocate Tpの指定した要素数分のメモリを解放する C++17
allocate_bytes 指定したバイト数のメモリを確保する C++20
deallocate_bytes 指定したバイト数のメモリを解放する C++20
allocate_object 指定した型の指定した要素数分のメモリを確保する C++20
deallocate_object 指定した型の指定した要素数分のメモリを解放する C++20

オブジェクト構築・破棄を行う関数

名前 説明 対応バージョン
construct 指定された領域にオブジェクトを構築する C++17
destroy 指定された領域のオブジェクトを破棄する C++17
new_object メモリを確保し指定した型の構築(new式相当の処理)を行う C++20
delete_object 指定した型の破棄とそのメモリ領域の解放(delete式相当の処理)を行う C++20

その他関数

名前 説明 対応バージョン
select_on_container_copy_construction コンテナのコピー構築時に新しいpolymorphic_allocator<Tp>を取得する C++17
resource 使用しているmemory_resourceを取得する C++17

メンバ型

名前 説明 対応バージョン
value_type Tp、確保・解放を行う対象の型(不完全型を使用可能) C++17

非メンバ関数

名前 説明 対応バージョン
operator== 等値比較 C++17
operator!= 非等値比較 C++17

バージョン

言語

  • C++17

処理系

関連項目

参照