Page 12 -
P. 12
C++ 표준 라이브러리(standard library)는 여러 컴포넌트로 구성돼 있다. 이 장에서는 컴포넌트의
개요와 사용법을 개략적으로 살펴본다.
1.1 역사 C++ STANDARD LIBRARY
C++와 표준 라이브러리의 역사는 길다. C++는 지난 밀레니엄인 1980년대에 등장해서 2017
년 버전까지 이어졌다. 소프트웨어 분야에 종사하는 이라면 누구나 알고 있듯이, 발전 속도가 빠
른 이 분야에서 30년은 상당히 긴 기간이다. I/O 스트림과 같은 C++의 초창기 컴포넌트를 설계
할 때 가졌던 패러다임은 최신 표준 템플릿 라이브러리(Standard Template Library, STL)를 설계할
때 적용한 패러다임과 상당히 다르다. 지난 30년 동안 C++가 얼마나 달라졌는지는 C++ 표준 라
이브러리만 봐도 알 수 있는데, 소프트웨어 분야의 문제를 해결한 역사라고도 볼 수 있다. C++는
객체지향 언어(object-oriented language)로 시작했다가 STL을 이용한 제네릭 프로그래밍 개념이 추
가됐고, 최근에는 함수형 프로그래밍 개념도 상당히 반영됐다.
그림 1-1 C++ 발전 과정
C++98 TR1 C++11 C++14 C++17
1998 2005 2011 2014 2017
첫 번째 ISO 표준 기술 보고서 1 두 번째 ISO 표준 소규모 ISO 표준 현재 ISO 표준
•컨테이너와 알고리즘으로 •정규 표현식 •알고리즘 •스마트 포인터, 튜플, •스트링 뷰
구성된 STL •스마트 포인터 •스마트 포인터 타입 트레이트, •STL의 병렬 알고리즘
•스트링 •해시 테이블 •멀티스레딩 멀티스레딩에 관련된 •파일 시스템 라이브러리
•I/O 스트림 •무작위수 개선 사항 •std::any,
•시간 라이브러리 std::optional과
std::variant
1998년에 나온 최초의 C++ 표준 라이브러리는 세 가지 컴포넌트로 구성됐다. 주로 파일 처리에
사용하는 I/O 스트림, 스트링 라이브러리, 표준 템플릿 라이브러리였다. 표준 템플릿 라이브러리
를 이용하면 세부 사항에 신경 쓰지 않고도 컨테이너와 알고리즘을 연결할 수 있다.
2005년에 등장한 TR1(Technical Report 1)(기술 보고서 1)은 ISO/IEC TR 19768, C++ 라이브러
리 확장 기능에 대한 문서로서 공식 표준은 아니지만, 여기에 나온 거의 모든 컴포넌트가 C++11
에 포함됐다. 예를 들어 정규 표현식, 스마트 포인터, 해시 테이블, 무작위수, 시간 등에 대한 라
28
c++_06.indd 28 2021-11-19 오전 9:25:42