Namespaces
Variants

std::pmr:: polymorphic_allocator

From cppreference.net
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* )
( 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)
헤더에 정의됨 <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 Allocator 요구 사항을 충족하며, 생성 시 사용된 std::pmr::memory_resource 에 따라 다른 할당 동작을 보여줍니다. memory_resource 가 런타임 다형성을 통해 할당을 관리하므로, polymorphic_allocator 를 정적 할당자 타입으로 사용하는 서로 다른 컨테이너 인스턴스들은 상호 운용이 가능하면서도 마치 서로 다른 할당자 타입을 가진 것처럼 동작할 수 있습니다.

polymorphic_allocator 의 모든 특수화는 할당자 완전성 요구사항 을 충족합니다.

polymorphic_allocator::construct 멤버 함수는 uses-allocator construction 을 수행하므로, polymorphic_allocator 를 사용하는 컨테이너의 요소들은 자체 할당에 동일한 할당자를 사용하게 됩니다. 예를 들어, std:: pmr :: vector < std:: pmr :: string > vector 의 저장소와 각 string 의 저장소에 동일한 memory_resource 를 사용합니다.

비다형 할당자의 경우, 유사한 전파는 std::scoped_allocator_adaptor 의 도움으로 달성할 수 있습니다.

목차

멤버 타입

멤버 타입 정의
value_type T

멤버 함수

polymorphic_allocator 를 생성합니다
(public 멤버 함수)
(소멸자)
(암시적으로 선언됨)
암시적으로 선언된 소멸자
(public 멤버 함수)
operator=
[삭제됨]
복사 할당 연산자가 삭제됨
(public 멤버 함수)
Public 멤버 함수
메모리 할당
(public 멤버 함수)
메모리 해제
(public 멤버 함수)
할당된 저장소에 객체를 생성합니다
(public 멤버 함수)
(C++20에서 사용 중단됨) (C++26에서 사용 중단 해제됨)
할당된 저장소에서 객체를 파괴합니다
(public 멤버 함수)
기본 리소스에서 정렬된 원시 메모리를 할당합니다
(public 멤버 함수)
allocate_bytes 로부터 얻은 원시 메모리를 해제합니다
(public 멤버 함수)
객체나 배열에 적합한 원시 메모리를 할당합니다
(public 멤버 함수)
allocate_object 로 얻은 원시 메모리를 해제합니다
(public 멤버 함수)
(C++20)
객체를 할당하고 생성합니다
(public 멤버 함수)
객체를 파괴하고 할당을 해제합니다
(public 멤버 함수)
컨테이너의 복사 생성자에서 사용할 새로운 polymorphic_allocator 를 생성합니다
(public 멤버 함수)
기본 메모리 리소스에 대한 포인터를 반환합니다
(public 멤버 함수)

비멤버 함수

(C++20에서 제거됨)
polymorphic_allocator 비교
(함수)

참고 사항

polymorphic_allocator 는 컨테이너 복사 할당, 이동 할당 또는 swap 시 전파되지 않습니다. 그 결과, polymorphic_allocator 를 사용하는 컨테이너의 이동 할당 연산은 예외를 발생시킬 수 있으며, 서로 다른 할당자(allocator)를 가진 두 polymorphic_allocator 사용 컨테이너를 교환(swap)할 경우 정의되지 않은 행동(undefined behavior)이 발생합니다.

기능 테스트 매크로 표준 기능
__cpp_lib_polymorphic_allocator 201902L (C++20) std::pmr::polymorphic_allocator<> as a vocabulary type

참고 항목

메모리 리소스를 캡슐화하는 클래스들을 위한 추상 인터페이스
(클래스)