본문 바로가기
책 정리/Effective C++ 3rd

항목 54. TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자

by ocean20 2020. 5. 12.

현 항목이 쓰여진 시점은 C++11(C++0x) 표준이 나오기 이전이다. 따라서 당시에는 C++98이후 C++표준이 2000년대의 한 시점에 공개될 것으로 예상해 C++0x으로 불려 왔으나, 2010년이 되면서 아무리 늦어도 2010년대의 한 시점에 공개될 것으로 예상해 C++1x로 변경되었고 2011년 8월 12일에 들어서야 국제표준으로 확정되면서 C++1x는 최종적으로 C++11이 되었다. (참고 - https://ko.wikipedia.org/wiki/C%2B%2B11) C++ 11에서는 Boost에서 사용되던 기능들이 대거 편입되었다.

 

C++98의 기존기능에 대해 알아보자.

 

1. 표준 템플릿 라이브러리(STL)

  - Container(vector, string, map ..)

  - iterator

  - algorithm(find, sort, transform..)

  - function object(less, greater ..)

  - funcion object adapter(stack, priority_queue, mem_fun, not1 ...)

2. iostream

  - 사용자 정의버퍼링, 국제화 기능 가능한 입출력

  - cin, cout, cerr, clog

3. 국제화 지원

  - 로케일, wchar_t 타입 및 wstring을 쓰면 유니코드 가능

4. 수치 처리 자원

  - 복소수(complex) 템플릿, 수치배열(valarray) 템플릿

5. 예외클래스 계통

  - 최상위클래스 exception 등

6. C89의 표준 라이브러리

 

이제 TR1을 통해 명시된 새로운 구성요소 14개에 대해 알아보자.

1. 스마트 포인터

2. tr1::function

3. tr1::bind

4. 해시테이블

5. 정규 표현식

6. 투플

7. tr1::array

8. tr1::mem_fn

9. tr1::reference_wrapper

10. 난수발생

11. 특수 용도의 수학 함수

12. C99 호환석 확장 기능

13. 타입 특성정보

14. tr1::result_of

 

이것만은 잊지말자

- 최초에 상정된 표준 C++라이브러리의 주요 구성요소는 STL, iostream, 로케일 등이다. 여기에는 C89의 표준 라이브러리도 포함되어 있다.

- TR1이 도입되면서 추가된 것은 스마트 포인터(tr1::shared_ptr 등), 일반화 함수포인터(tr1::function), 해시기반컨테이너, 정규 표현식, 그리고 그외의 10개의 구성요소이다.

- TR1자체는 단순히 명세서일 뿐입니다. TR1의 기능을 사용하기 위해서는 명세를 구현한 코드를 구해야 한다. TR1구현을 구할 수 있는 자료처 중 한군데가 부스트이다.

댓글