Hyun2and
[Effective STL] 0. 서론 본문
728x90
- 수월할 것 같은 연산이 자원 누수를 일으키거나 불안정하게 동작한다
- STL이 제공해주는 요소를 잘 결합해서 설계상의 특징을 최대한 끌어내야 한다
STL의 정의
- 이 책에서는 반복자를 가지고 동작하는 C++ 표준 라이브러리의 일부로 정의한다
- string을 포함한 표준 컨테이너, iostream 라이브러리, 함수 객체, 알고리즘 등
- (stack, queue, 우선순위 큐, bitset, valarray, C++ 배열 은 제외)
- 해쉬 포인터도 포함 . 원래의 STL 정의에는 없다.
참조 카운팅 Reference Counting
- 포인터의 컨테이너를 기반으로 한 설계에서 이야기한다
- string 클래스도 내부적으로 참조 카운팅을 하게 되어있다
string, wstring
- 유니코드 문자열클래스 wstring
- stirng - char - char * = wstring - wchar_t - wchar_t*
- string 에서 된다면 wstring에서도 된다 (둘은 basic_string으로 만든 템플릿 인스턴스이므로)
기본 용어
반복자
- 입력 반복자 input iterator : 현재의 위치에 있는 데이터에 대해 읽기만 가능하다
- 출력 반복자 output iterator : 현재의 위치에 있는 데이터에 대해 쓰기만 가능하다
- 순방향 반복자 forward iterator : 입력, 출력 반복자의 기능을 모두 가지지만 한 위치에서만 되풀이한다. 뒤로 이동할 수 없다(operator가 안된다)
- Forward 이상의 반복자를 지원하기도 하지만, 해쉬 컨테이너, 단일 연결 리스트 등에서는 Forward만 쓰기도 한다
- 양방향 반복자 Bidirectional iterator : 순방향을 모두 가지면서, 뒤로도 이동할 수 있다. 표준 연관 컨테이너, list 에서는 모두 제공한다
- 임의 접근 반복자 Random access iterator : 양방향의 기능이 모두 가능하면서, 반복자의 산술 연산이 가능하다.
- vector, string ,deque 에서 제공한다
- 배열 요소를 가지는 포인터도 배열 안에서는 동일한 역할을 함
728x90