ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Effective STL] 0. 서론
    Programming/Effective STL 2023. 2. 19. 22:46

     

    • 수월할 것 같은 연산이 자원 누수를 일으키거나 불안정하게 동작한다
    • 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
Designed by Tistory.