Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::pmr::polymorphic_allocator

      From cppreference.com
      <cpp‎ |memory
       
       
      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*)
      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)
       
       
      Defined in header<memory_resource>
      template<class T>
      class polymorphic_allocator;
      (since C++17)
      (until C++20)
      template<class T=std::byte>
      class polymorphic_allocator;
      (since C++20)

      The class templatestd::pmr::polymorphic_allocator is anAllocator which exhibits different allocation behavior depending upon thestd::pmr::memory_resource from which it is constructed. Sincememory_resource uses runtime polymorphism to manage allocations, different container instances withpolymorphic_allocator as their static allocator type are interoperable, but can behave as if they had different allocator types.

      All specializations ofpolymorphic_allocator meet theallocator completeness requirements.

      Thepolymorphic_allocator::construct member function doesuses-allocator construction, so that the elements of a container using apolymorphic_allocator will use that same allocator for their own allocations. For example, astd::pmr::vector<std::pmr::string> will use the samememory_resource for thevector's storage and eachstring's storage.

      For non-polymorphic allocators, similar propagation can be achieved with the help ofstd::scoped_allocator_adaptor.

      Contents

      [edit]Member types

      Member type definition
      value_typeT

      [edit]Member functions

      constructs apolymorphic_allocator
      (public member function)[edit]
      (destructor)
      (implicitly declared)
      implicitly declared destructor
      (public member function)[edit]
      operator=
      [deleted]
      copy assignment operator is deleted
      (public member function)[edit]
      Public member functions
      allocate memory
      (public member function)[edit]
      deallocate memory
      (public member function)[edit]
      constructs an object in allocated storage
      (public member function)[edit]
      (deprecated in C++20)(undeprecated in C++26)
      destroys an object in allocated storage
      (public member function)[edit]
      allocate raw aligned memory from the underlying resource
      (public member function)[edit]
      free raw memory obtained fromallocate_bytes
      (public member function)[edit]
      allocates raw memory suitable for an object or an array
      (public member function)[edit]
      frees raw memory obtained byallocate_object
      (public member function)[edit]
      (C++20)
      allocates and constructs an object
      (public member function)[edit]
      destroys and deallocates an object
      (public member function)[edit]
      create a newpolymorphic_allocator for use by a container's copy constructor
      (public member function)[edit]
      returns a pointer to the underlying memory resource
      (public member function)[edit]

      [edit]Non-member functions

      (removed in C++20)
      compare twopolymorphic_allocators
      (function)[edit]

      [edit]Notes

      polymorphic_allocator does not propagate on container copy assignment, move assignment, or swap. As a result, move assignment of apolymorphic_allocator-using container can throw, and swapping twopolymorphic_allocator-using containers whose allocators do not compare equal results in undefined behavior.

      Feature-test macroValueStdFeature
      __cpp_lib_polymorphic_allocator201902L(C++20)std::pmr::polymorphic_allocator<> as a vocabulary type

      [edit]See also

      an abstract interface for classes that encapsulate memory resources
      (class)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/polymorphic_allocator&oldid=161351"

      [8]ページ先頭

      ©2009-2025 Movatter.jp