std::pmr:: polymorphic_allocator
|
헤더에 정의됨
<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 멤버 함수) |
|
(C++20)
|
기본 리소스에서 정렬된 원시 메모리를 할당합니다
(public 멤버 함수) |
|
(C++20)
|
allocate_bytes
로부터 얻은 원시 메모리를 해제합니다
(public 멤버 함수) |
|
(C++20)
|
객체나 배열에 적합한 원시 메모리를 할당합니다
(public 멤버 함수) |
|
(C++20)
|
allocate_object
로 얻은 원시 메모리를 해제합니다
(public 멤버 함수) |
|
(C++20)
|
객체를 할당하고 생성합니다
(public 멤버 함수) |
|
(C++20)
|
객체를 파괴하고 할당을 해제합니다
(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
|
참고 항목
|
(C++17)
|
메모리 리소스를 캡슐화하는 클래스들을 위한 추상 인터페이스
(클래스) |