GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::pmr::polymorphic_allocator - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. memory_resource
  3. polymorphic_allocator

最終更新日時: 2024年08月09日 13時35分29秒 (JST)
Akira Takahashi が更新

履歴 編集

class template
<memory_resource>

std::pmr::polymorphic_allocator(C++17)

namespace std::pmr {
  template <class Tp>
  class polymorphic_allocator;    //C++17

  template <class Tp = byte>
  class polymorphic_allocator;    //C++20
}

概要

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

処理系

  • Clang: ??
  • GCC: 9.1 ✅
  • Visual C++: 2017 update 6 ✅

関連項目

  • memory_resource

参照

  • C++1z 多相アロケータとメモリプール - Faith and Brave - C++で遊ぼう
  • memory_resourceについて - 本の虫
  • Polymorphic Allocator in C++17 - Qiita
  • P0220R1 Adopt Library Fundamentals V1 TS Components for C++17 (R1)
  • P0337r0 | Delete operator= for polymorphic_allocator
  • Working Draft, C++ Extensions for Library Fundamentals, Version 2
  • P0339R6 polymorphic_allocator<> as a vocabulary type
  • LWG Issue 3037. polymorphic_allocator and incomplete types
  • LWG Issue 3036. polymorphic_allocator::destroy is extraneous
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.