Page 13 -
P. 13
이브러리가 정의됐는데, 이는 부스트(Boost) 라이브러리(http://www.boost.org/)에 토대를 두
고 있다.
C++11부터 TR1의 표준화와 함께 멀티스레딩 라이브러리가 새로 추가됐다. 1
C++14는 C++11 표준을 살짝 업데이트한 것에 불과하다. 그래서 스마트 포인터, 튜플, 타입 트
레이트, 멀티스레딩에 대한 기존 라이브러리의 몇 가지 개선 사항만 추가됐다. 표준 라이브러리
C++17부터는 파일 시스템 라이브러리, std::any, std::optional이란 데이터 타입이 새로 추가
됐다. C++20(일명 ‘Concepts Lite’)부터 네트워크 프로그래밍 라이브러리와 템플릿 매개변수에
대한 타입 시스템이 추가되고 멀티스레딩에 대한 지원이 향상됐다.
1.2 개요 C++ STANDARD LIBRARY
C++11에서 제공하는 라이브러리가 워낙 방대해서 어느 것을 사용해야 할지 판단하기 힘들 때가
많다. 이 책을 통해 주요 특성을 잘 파악해두자. 표준 라이브러리는 크게 다음과 같이 구성된다.
1.2.1 유틸리티
유틸리티(utility) 라이브러리는 여러 문맥에 두루 활용할 수 있는 범용 기능을 모아둔 라이브러리다.
가령 주어진 값 중에서 최솟값 또는 최댓값을 계산하거나 값을 교체하거나 옮기는 함수가 있다.
또 다른 예로 std::function과 std::bind가 있다. std::bind를 이용하면 기존 함수를 토대로 새
로운 함수를 쉽게 만들 수 있다. 이렇게 만든 함수를 나중에 호출하기 위해 변수에 바인딩하려면
std::function을 사용한다.
std::pair나 이를 일반화한 std::tuple을 이용하면 임의의 길이로 된 이형(heterogeneous) 페어나
튜플을 생성할 수 있다.
레퍼런스 래퍼(reference wrapper)인 std::ref와 std::cref도 꽤 유용하다. std::ref는 변수에 대
한 레퍼런스 래퍼 오브젝트를 생성한다. const 레퍼런스는 std::cref로 생성한다.
29
c++_06.indd 29 2021-11-19 오전 9:25:42