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 は、 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 を構築する
(public member function)
(destructor)
(implicitly declared)
暗黙的に宣言されたデストラクタ
(public member function)
operator=
[deleted]
コピー代入演算子は削除されている
(public member function)
公開メンバ関数
メモリを割り当てる
(public member function)
メモリを解放する
(public member function)
割り当てられたストレージ内でオブジェクトを構築する
(public member function)
(C++20で非推奨) (C++26で非推奨解除)
割り当てられたストレージ内のオブジェクトを破棄する
(public member function)
基盤リソースからアライメントされた生メモリを割り当てる
(public member function)
allocate_bytes から取得した生メモリを解放する
(public member function)
オブジェクトまたは配列に適した生メモリを割り当てる
(public member function)
allocate_object で取得した生メモリを解放する
(public member function)
(C++20)
オブジェクトを割り当てて構築する
(public member function)
オブジェクトを破棄して解放する
(public member function)
コンテナのコピーコンストラクタで使用するための新しい polymorphic_allocator を作成する
(public member function)
基盤メモリリソースへのポインタを返す
(public member function)

非メンバー関数

(C++20で削除)
二つの polymorphic_allocator を比較
(関数)

注記

polymorphic_allocator は、コンテナのコピー代入、ムーブ代入、またはswapにおいて伝播しません。その結果、 polymorphic_allocator を使用するコンテナのムーブ代入は例外を送出する可能性があり、等価でないアロケータを持つ2つの polymorphic_allocator を使用するコンテナのswapは未定義動作を引き起こします。

機能テスト マクロ 標準 機能
__cpp_lib_polymorphic_allocator 201902L (C++20) std::pmr::polymorphic_allocator<> をボキャブラリ型として

関連項目

メモリリソースをカプセル化するクラスのための抽象インターフェース
(クラス)