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
   7   8   9   10   11   12   13   14   15   16   17