Boost

Boost는 오픈 소스로 대부분의 플랫폼과 컴파일러에서 모두 돌아가는 C++ 라이브러리이다.
Boost는 C++ 개발자의 단체이자 무료 다운로드 가능한 C++ 라이브러리를 일컫는 고유명사이다.
https://boost.org
Boost는 다른 C++ 개발자 단체 및 웹사이트보다
C++ 표준화 위원회와 밀접하고 영향력있는 관계를 유지하고 있다.
(위원회에 속한 일부 멤버가 Boost를 세움)
Boost에서 새로운 라이브러리는 복잡하고 엄격한 승인 과정을 거치기 때문에, 높은 완성도를 가진다.
- 문자열 및 텍스트 처리
주요 구성요소와 타입 안정성을 갖춘 printf와 비슷한 서식화 기능, 정규 표현식 및 토큰화 등 기능을 제공
- 컨테이너
STL 양식의 인터페이스를 제공하는 고정 크기 배열, 가변 크기 비트 세트, 다차원 배열 등 제공
- 함수 객체 및 고차(higher-order) 프로그래밍
TR1의 기능을 구현하는 데 사용된 몇개의 기반 라이브러리를 가지고 있다.
ex) C++11에서 정식 채택된 Lambda 라이브러리
Lambda를 이용하면, 별도의 준비 없이 즉석에서 함수 객체를 생성할 수 있는 기능을 제공
using namespace boost::lambda;
std::vector<int> v;
// ...
std::for_each(v.begin(), v.end(), std::cout<<_1*2+10<<"\n");
// _1 . x*2+10
// after C++11 lambda
[](float a, float b){
return (std::abs(a)<std::abs(b));
}
- 일반화 프로그래밍
특성 정보(traits) 클랫 제공
- 템플릿 메타프로그래밍(TMP)
부스트 MPL 라이브러리 등, 컴파일 타임 단정문
ex) 타입 등의 컴파일 타임 개체를 STL과 유사한 자료구조로 관리할 수 있게 해줌
typedef boost::mpl::list<float, double, long double> floats;
typedef boost::mpl::push_front<floats, int>::type_traits;
boost::mpl::list외에도 boost::mpl::vector emdeh wlndjs
- 수학 및 수치 조작
유리수, 4원수(quaternion) 및 8원수(octonion), 최대 공약수 및 최소 공배수, 난수 등을 제공
- 정확성 유지 및 테스트
암시적 템플릿 인터페이스를 형식화해 주는 라이브러리와
테스트 우선 프로그래밍을 가능하게 해주는 라이브러리 제공
- 자료구조
타입 안전성을 갖춘 공용체(크기와 쓰임이 다른 어떤 타입도 담을 수 있는 자료구조)
ex) tr1::tuple
- 타 언어와의 연동 지원
C++와 Python이 사이에 걸림돌 없이 상호운용할 수 있도록 지원하는 라이브러리 제공
- 메모리
고성능의 고정 크기 할당자를 지원하는 풀(Pool) 라이브러리
ex) boost::scoped_array; 동적으로 할당된 배열에 대해 동작하는 auto_ptr 같은 스마트 포인터
- 기타
CRC 점검, 날짜 및 시간 조작, 파일 시스템 횡단 등을 지원하는 라이브러리 등