<scoped_allocator>
ヘッダーは、コンテナとコンテナ内の要素で別々のアロケータを使用できるようにするアロケータアダプタ、scoped_allocator_adaptor
を定義しています。その主な機能は以下の通りです。
概要
編集- コンテナ用の外側(outer)アロケータと、コンテナ内の要素用の内側(inner)アロケータを組み合わせたアロケータアダプタ
- 内側アロケータは0個以上指定可能で、階層的にネストされたコンテナ要素に渡される
メンバー型
編集inner_allocator_type
: 内側アロケータの型propagate_on_container_*
: 外側・内側アロケータのpropagation traitによって決定される型is_always_equalP: 全アロケータの
is_always_equal` traitによって決定される型
コンストラクタ
編集- デフォルトコンストラクタと、外側・内側アロケータを受け取るコンストラクタがある
- 異なる外側アロケータ型からも構築可能
メンバー関数
編集inner_allocator()
/outer_allocator()
: 内側・外側アロケータへのアクセサallocate()
/deallocate()
: 外側アロケータを使ってメモリ確保・解放construct()
/destroy()
: 内側アロケータを使ってオブジェクト構築・破棄select_on_container_copy_construction()
: コンテナコピー構築用のアロケータを返す
operator== (一致)
編集- 外側アロケータが一致する場合にtrueを返す
- 内側アロケータがある場合は内側アロケータも比較する
scoped_allocator_adaptor
を使うと、コンテナ自体とコンテナ内の要素で別々のメモリ確保ポリシーを適用できます。たとえばコンテナにはnew
/delete
を使い、要素にはプールアロケータを使うなどの組み合わせが可能です。メモリ確保のカスタマイズ性が高まります。