[STL] 할당기

할당기

컨테이너의 메모리 할당 정보와 정책(메모리 할당 모델)을 캡슐화한 STL의 구성 요소

할당기는 템플릿 클래스이며 모든 컨테이너는 기본 할당기를 사용합니다.
C++의 동적 메모리 할당 연산자 new와 delete를 사용자가 오버로딩해서 사용할 수 있듯이 STL의 할당기도 사용자가 직접 할당기를 정의하고 사용할 수 있습니다.

 

사용자 정의 할당기: 사용자가 직접 메모리 할당 방식을 제어할 수 있게 합니다. 다중 스레드에 최적화되고 안전한 사용자 메모리 할당 모델이 필요하거나 사용자가 컨테이너에 맞는 메모리 할당 모델을 설계하거나 특정 구현 환경에서 최적화된 메모리 할당 모델을 구축할 때 사용합니다.

 

컨테이너 기본 할당기 allocator<T>

#include <iostream>
#include <vector>
#include <set>
using namespace std;

int main() {

	//_EXPORT_STD template <class _Ty, class _Alloc = allocator<_Ty>>
	vector<int, allocator<int>>v;
	v.push_back(10);
	cout << *v.begin() << endl;

	//_EXPORT_STD template <class _Kty, class _Pr = less<_Kty>, class _Alloc = allocator<_Kty>>
	//	class set : public _Tree<_Tset_traits<_Kty, _Pr, _Alloc, false>>
	set<int, less<int>, allocator<int>> s;
	s.insert(10);
	cout << *s.begin() << endl;


	return 0;
}

 

Vector 템플릿 클래스

 

 

Set 템플릿 클래스

 

 

_Alloc 에 할당을 템플릿 클래스의 메모리 크기만큼 하는 것을 확인할 수 있습니다.

'C++ > STL' 카테고리의 다른 글

[STL] Vector 컨테이너  (0) 2025.03.10
[STL] 5장 문제풀이  (0) 2025.03.08
[STL] 어댑터2  (0) 2025.03.03
[STL] 함수객체  (0) 2025.03.03
[STL] 어댑터  (0) 2025.03.03