프로그래밍/C,C++

STL 커스터마이징

MAKGA 2018. 4. 18. 21:13
320x100

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

320x100

'프로그래밍 > C,C++' 카테고리의 다른 글

가상 메모리 및 Large Address Aware  (0) 2020.02.19
C++ 연산자 오버로딩  (0) 2018.04.25
유틸리티 라이브러리  (0) 2018.04.18
문자열과 정규 표현식  (0) 2018.04.15
함수 객체  (0) 2018.04.15