STL 커스터마이징
1. 할당자
STL컨테이너는 할당자 타입을 템플릿 파라미터로 받는다.
ex) vector 템플릿 정의
template<class T, class Allocator = allocator<T>> class vector;
2. 반복자 어댑터
2.1 역뱡항 어댑터
reverse_iterator를 이용하면 역방향 탐색을 할 수 있다.
typedef reverse_iterator와 rbegin(), rend() 메서드를 지원한다.
2.2 스트림 반복자
입출력 스트림을 입출력 반복자로 취급할 수 있는 스트림 어댑터를 제공한다.
ostream_iterator(출력 스트림 반복자), istream_iterator(입력 스트림 반복자)
ex)
std::vector<int> myVector;
for (int i = 0; i < 10; i++) {
myVector.push_back(i);
}
std::copy(myVector.begin(), myVector.end(), std::ostream_iterator<int>(std::cout, " "));
2.3 삽입 반복자
항목을 교체하지 않고 컨테이너의 삽입 메서드를 호출하여 새로운 항목을 생성하게 한다.
insert_iterator, back_insert_iterator
ex)
remove_copy_if(vectorOne.begin(), vectorOne.end(), inserter, [](int i){return i == 100;});
2.4 이동 반복자
객체를 대입할 때 불필요한 복제 생성자를 호출하지 않는 이동 시맨틱을 따라는 반복자
move_iterator