할당기
컨테이너의 메모리 할당 정보와 정책(메모리 할당 모델)을 캡슐화한 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 |