C++/標準ライブラリ/scoped allocator
表示
<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を使い、要素にはプールアロケータを使うなどの組み合わせが可能です。メモリ確保のカスタマイズ性が高まります。