다음을 통해 공유


allocator_traits 클래스

클래스 템플릿은 할당자 형식을 보완하는 개체를 설명합니다. 할당자 형식은 할당된 스토리지를 관리하는 데 사용되는 할당자 개체를 설명하는 형식입니다. 특히 할당자 형식 Alloc에 대해서는 할당자를 사용할 수 있는 컨테이너에 필요한 모든 정보를 확인하기 위해 allocator_traits<Alloc>를 사용할 수 있습니다. 자세한 내용은 기본 allocator 클래스를 참조하세요.

구문

template <class Alloc>
    class allocator_traits;

멤버

Typedef

이름 설명
allocator_type 이 형식은 템플릿 매개 변수 Alloc의 동의어입니다.
const_pointer 잘 구성된 형식인 경우 이 형식은 Alloc::const_pointer이고, 아닌 경우 pointer_traits<pointer>::rebind<const value_type>입니다.
const_void_pointer 잘 구성된 형식인 경우 이 형식은 Alloc::const_void_pointer이고, 아닌 경우 pointer_traits<pointer>::rebind<const void>입니다.
difference_type 잘 구성된 형식인 경우 이 형식은 Alloc::difference_type이고, 아닌 경우 pointer_traits<pointer>::difference_type입니다.
pointer 잘 구성된 형식인 경우 이 형식은 Alloc::pointer이고, 아닌 경우 value_type *입니다.
propagate_on_container_copy_assignment 잘 구성된 형식인 경우 이 형식은 Alloc::propagate_on_container_copy_assignment이고, 아닌 경우 false_type입니다.
propagate_on_container_move_assignment 잘 구성된 형식인 경우 이 형식은 Alloc::propagate_on_container_move_assignment이고, 아닌 경우 false_type입니다. 형식이 true이면, 할당자를 사용할 수 있는 컨테이너는 이동 할당 시 저장된 할당자를 복사합니다.
propagate_on_container_swap 잘 구성된 형식인 경우 이 형식은 Alloc::propagate_on_container_swap이고, 아닌 경우 false_type입니다. 형식이 true이면, 할당자를 사용할 수 있는 컨테이너는 교환 시 저장된 할당자를 교환합니다.
size_type 잘 구성된 형식인 경우 이 형식은 Alloc::size_type이고, 아닌 경우 make_unsigned<difference_type>::type입니다.
value_type 이 형식은 Alloc::value_type의 동의어입니다.
void_pointer 잘 구성된 형식인 경우 이 형식은 Alloc::void_pointer이고, 아닌 경우 pointer_traits<pointer>::rebind<void>입니다.

정적 메서드

다음 정적 메서드는 지정된 할당자 매개 변수에서 해당 메서드를 호출합니다.

이름 설명
allocate 지정된 할당자 매개 변수를 사용하여 메모리를 할당하는 정적 메서드입니다.
construct 지정된 할당자를 사용하여 개체를 생성하는 정적 메서드입니다.
deallocate 지정된 할당자를 사용하여 지정된 수의 개체를 할당 해제하는 정적 메서드입니다.
destroy 지정된 할당자를 사용하여 메모리를 할당 취소하지 않고 개체에서 소멸자를 호출하는 정적 메서드입니다.
max_size 지정된 할당자를 사용하여 할당 가능한 개체의 최대 수를 결정하는 정적 메서드입니다.
select_on_container_copy_construction 지정된 할당자에서 select_on_container_copy_construction을 호출하는 정적 메서드입니다.

할당

지정된 할당자 매개 변수를 사용하여 메모리를 할당하는 정적 메서드입니다.

static pointer allocate(Alloc& al, size_type count);

static pointer allocate(Alloc& al, size_type count,
    typename allocator_traits<void>::const_pointer* hint);

매개 변수


할당자 개체입니다.

count
할당할 요소의 수입니다.

힌트
요청 이전에 할당된 개체의 주소를 찾음으로써 스토리지에 대한 요청을 충족하여 할당자 개체를 지원할 수 있는 const_pointer입니다. Null 포인터는 힌트 없음으로 처리됩니다.

Return Value

각 메서드는 할당된 개체에 대한 포인터를 반환합니다.

첫 번째 정적 메서드는 al.allocate(count)를 반환합니다.

해당 식이 잘 구성되어 있는 경우 두 번째 메서드는 al.allocate(count, hint)를 반환하고, 아닌 경우 al.allocate(count)를 반환합니다.

construct

지정된 할당자를 사용하여 개체를 생성하는 정적 메서드입니다.

template <class Uty, class Types>
static void construct(Alloc& al, Uty* ptr, Types&&... args);

매개 변수


할당자 개체입니다.

ptr
개체를 생성할 위치에 대한 포인터입니다.

args
개체 생성자에 전달되는 인수 목록입니다.

설명

해당 식이 잘 구성되어 있는 경우 정적 멤버 함수는 al.construct(ptr, args...)를 호출하고, 아닌 경우 ::new (static_cast<void *>(ptr)) Uty(std::forward<Types>(args)...)를 평가합니다.

deallocate

지정된 할당자를 사용하여 지정된 수의 개체를 할당 해제하는 정적 메서드입니다.

static void deallocate(Alloc al,
    pointer ptr,
    size_type count);

매개 변수


할당자 개체입니다.

ptr
할당을 취소할 개체의 시작 위치에 대한 포인터입니다.

count
할당을 취소할 개체의 수입니다.

설명

이 메서드는 al.deallocate(ptr, count)를 호출합니다.

이 메서드는 아무것도 throw하지 않습니다.

destroy

지정된 할당자를 사용하여 메모리를 할당 취소하지 않고 개체에서 소멸자를 호출하는 정적 메서드입니다.

template <class Uty>
    static void destroy(Alloc& al, Uty* ptr);

매개 변수


할당자 개체입니다.

ptr
개체의 위치에 대한 포인터입니다.

설명

해당 식이 잘 구성되어 있는 경우 이 메서드는 al.destroy(ptr)를 호출하고, 아닌 경우 ptr->~Uty()를 평가합니다.

max_size

지정된 할당자를 사용하여 할당 가능한 개체의 최대 수를 결정하는 정적 메서드입니다.

static size_type max_size(const Alloc& al);

매개 변수


할당자 개체입니다.

설명

해당 식이 잘 구성되어 있는 경우 이 메서드는 al.max_size()를 반환하고, 아닌 경우 numeric_limits<size_type>::max()를 반환합니다.

select_on_container_copy_construction

지정된 할당자에서 select_on_container_copy_construction을 호출하는 정적 메서드입니다.

static Alloc select_on_container_copy_construction(const Alloc& al);

매개 변수


할당자 개체입니다.

Return Value

이 메서드는 형식이 올바른 형식이면 반환al.select_on_container_copy_construction()하고, 그렇지 않으면 al을 반환합니다.

설명

이 메서드는 연결된 컨테이너를 복사하여 생성할 할당자를 지정하는 데 사용됩니다.