Hyun2and

[Effective STL] 0. 서론 본문

공부엔 끝이없다/Effective STL

[Effective STL] 0. 서론

혀니앤 2023. 2. 19. 22:46
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
Comments