본문 바로가기
이론/[책]Effective C++

[항목55]Boo자유친! 부스트를 늘 여러분 가까이에

by 사과잼빵 2018. 1. 2.

Boost 라이브러리는 현장에 당장 투입 될 수 있을 정도로 품질도 우수하고, 오픈소스이며 대부분의 플랫폼과 컴파일러에서 돌아갑니다.

Boost는 C++ 표준화 위원회와 밀접한 관계를 유지하고 있으며 표준 C++에 추가될 수 있는 기능들의 시험 장소로 사용되고 있습니다.

Boost 라이브러리는 크기와 범위가 아주 제각각입니다. (작은 녀석들은 코드 몇줄이지만 무지막지하게 큰 라이브러리도 있다.)

Boost 라이브러리는 크게 십수 개의 범주로 나뉘어 있습니다.


1. 문자열 및 텍스트 처리

 boost::regex -> std::regex    C++ 11에서 표준으로 추가

 

2. 컨테이너 

- STL 양식의 인터페이스를 제공하는 고정 크기 배열

 tr1::array  -> std::array C++ 11에서 표준으로 추가


- 가변크기 비트세트

std::bitset C++11에서 표준으로 추가


- 다차원 배열

boost::multi_array

표준화되지는 않았고 std::array를 중첩해서 쓴다. 


3. 함수 객체 및 고차 프로그래밍

boost::lambda  -> C++11부터 Lambda expression으로 표준화됨


4. 일반화 프로그래밍

http://www.boost.org/doc/libs/1_63_0/libs/type_traits/doc/html/index.html

엄청난 Trait 들이 존재합니다..


5. 템플릿 메타프로그래밍

typedef boost::mpl::list<float, double, long double> floats;

typedef boost::mpl::push_front<floats, int>::type types;

위와 같이 타입을 담아 관리 할 수 있다.


6. 수학 및 수치 조작

Boost.Rational 유리수

Boost.Quaternions 4원수

boost::math::gcd_evaluator 최대공약수

boost::math::lcm_evaluator 최소공배수

Boost.Random -> std::rand()  난수


7. 정확성 유지 및 테스트

Boost.Test 단위테스트


8. 자료구조

Boost.Tuple -> std::tuple   c++11부터 표준화됨


9. 메모리

Boost.SmartPtr -> std::shared_ptr, std::unique_ptr 등으로 c++11부터 표준화됨