名前空間
変種
操作

std::pmr::polymorphic_allocator

From cppreference.com
< cpp‎ | memory
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(C++17)
(C++17)
(C++17)
制約付き未初期化
メモリアルゴリズム
Cライブラリ

アロケータ
pmr::polymorphic_allocator
(C++17)
メモリリソース
ガベージコレクションのサポート
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
未初期化ストレージ
(C++20まで*)
(C++20まで*)
明示的な生存期間管理
 
 
ヘッダ <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に応じて異なるアロケーション動作を示すAllocatorです。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で削除)
2つの polymorphic_allocator を比較する
(関数) [編集]

[編集] 備考

polymorphic_allocator は、コンテナのコピー代入、ムーブ代入、またはスワップでは伝播しません。その結果、polymorphic_allocator を使用するコンテナのムーブ代入は例外を投げる可能性があり、アロケータが等しくないと比較される2つの polymorphic_allocator を使用するコンテナのスワップは未定義の動作を引き起こします。

機能テストマクロ 規格 機能
__cpp_lib_polymorphic_allocator 201902L (C++20) 語彙型としての std::pmr::polymorphic_allocator<>

[編集] 関連項目

メモリリソースをカプセル化するクラスのための抽象インターフェース
(クラス) [編集]
English 日本語 中文(简体) 中文(繁體)