[ Effective C++ ] 항목 54 : TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자

Minsu._.Lighting·2023년 12월 16일
0

[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "

[핵심]

" 제목이 곧 핵심! "

  • 최초에 상정된 표준 C++ 라이브러리의 주요 구성요소는 STL, iostream, 로케일 등이며, 여기에는 C89의 표준 라이브러리도 포함되어 있다!
  • TR1이 도입되면서 추가된 것은 스마트 포인터, 일반화 함수 포인터, 해시 기반 컨테이너, 정규 표현식 그리고 그 외의 10개 구성요소이다!
  • TR1 자체는 단순히 명세서일 뿐, TR1의 기능을 사용하기 위해서는 명세를 구현한 코드를 구해야 한다. TR1 구현을 구할 수 있는 자료처 중 한 군데가 바로 부스트이다!

💡 C++ 라이브러리의 주요 구성요소

📌 표준 템플릿 라이브러리(Standard Template Library : STL)

- 컨테이너(vector, string, map 등), 반복자, 알고리즘(find, sort 등), 함수 객체(less, greater 등) 외에 컨테이너 어댑터와 함수 객체 어댑터가 있다

📌 iostream

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

- cin, cout, cerr, clog 등의 사전정의 객체를 지원

📌 국제화 지원

- 여러 로케일을 활성화시킬 수 있는 기능 포함

- wchar_t 등의 타입 및 wstring을 쓰면 유니코드를 사용할 수 있다

📌 수치 처리 지원

- 복소수를 나타내는 템플릿(complex) 및 수치 배열을 나타내는 템플릿(valarray)이 여기에 해당된다

📌 예외 클래스 계통

- 최상위 클래스인 exception 및 이것으로부터 갈라져 나온 파생 클래스들이 포함된다

📌 C89의 표준 라이브러리

- 1989년 버전의 C에 포함된 표준 라이브러리는 전부 C++에도 들어 있다



💡 TR1의 구성요소

📌 스마트 포인터

- shared_ptr, weak_ptr 이 여기에 해당
- 동작은 기본제공 포인터와 똑같으나, 하나의 실제 객체를 가리키는 자신과 같은 포인터의 개수를 유지해 놓는(참조 카운팅)방식을 지원하는 포인터

- TR1 에서 가장 폭넓게 쓰인다

📌 tr1::function

- 어떤 함수가 가진 시그니처와 호환되는 시그니처를 갖는 함수호출성 객체의 표현을 가능하게 해 주는 템플릿

📌 tr1::bind

- 현역 STL 바인더로 잘 쓰이고 있는 bind1st 및 bind2nd와 똑같이 동작함은 물론, 그보다 훨씬 더 많은 기능이 있는 범용 바인더

📌 해시 테이블

- 세트, 멀티세트, 맵, 멀티맵을 구현하는 데 이 해시 테이블이 쓰였다

📌 정규 표현식

- 정규 표현식 기반의 탐색과 문자열에 대한 대체 연산이 가능하며, 일치되는 원소들 사이의 순회도 지원한다

📌 투플

- 종래의 표준 라이브러리에 원래 있었던 pair 템플릿의 신세대 버전, pair 객체의 경우에는 두 개만 담을 수 있는 반면, 투플 객체는 몇 개라도 담을 수 있다

📌 tr1::array

- begin 및 end 등의 멤버 함수를 지원하는 배열, 객체의 크기가 컴파일 과정에서 고정되어 동적 메모리를 쓰지 않는다

📌 tr1::mem_fn

- 멤버 함수 포인터를 적응시키는 용도에 쓸 수 있는 템플릿

📌 tr1::reference_wrapper

- 기존의 참조자가 객체처럼 행세할 수 있도록 만들어 주는 템플릿
- 참조자를 담은 것 처럼 동작하는 컨테이너를 만들 수 있다

📌 난수 발생

- rand 함수보다 몇 배는 우수한 난수 발생 기능

📌 특수 용도의 수학 함수

- 라게르 다항식, 베셀 함수, 완전 타원 적분 등

📌 C99 호환성 확장 기능

- C99의 새로운 라이브러리를 C++로 가져올 목적으로 설계된 함수 및 템플릿 모음

📌 타입 특성정보

- 주어진 타입에 대한 컴파일 타임 정보를 제공하는 특성정보 클래스
- [ 항목 47 : 타입에 대한 정보가 필요하다면 특성정보 클래스를 사용하자 ] 참조

📌 tr1::result_of

- 어떤 함수 호출의 반환 타입을 추론해 주는 템플릿

profile
오코완~😤😤

0개의 댓글

관련 채용 정보