* generic 을 옴기는 과정에서 그냥 일반화라고 적었는데요, specialize 와 마찬가지로 template 관련 책을 보시지 않으면 잘 이해가 되지 않을 것입니다. 보통 객체지향 프로그래밍과 대비되는 말로 template 을 사용한 디자인을 일반화 프로그래밍이라고 하며, 일반화로 디자인된 객체를 실제 객체로 매칭시켜서 특화시킨 것을 template specialize 라고 합니다.
* stl 도 마찬가지지만 boost 는 고수준의 template 코딩 테크닉이 함축되어 있어 사용 혹은 구현 소스를 보실 때 혼동이 많으실 겁니다. 국내에 관련하여 빨간책 시리즈가 나와 있는데요, 이 책들이 도움을 줄 수 있을 것입니다.(modern c+ design 외 다수)
* 정리하다 보니 정말 너무 많네요. 제가 영어가 부족한 부분도 있는데다가 실제 내용을 읽어보지 않고서 정리하기에 무리가 있는 부분도 있고, 중간에 볼드체로 표시하지 않은 부분 부터는 간단하게 적어보았습니다. ---------------- [ Container ] ----------------
Any 다른 형태의 타입들을 담을 수 있는 안정적이고 일반화된 컨테이너
Array 고정 크기 배열을 위한 wrapper 로, STL 과 쉽게 연동하여 사용할 수 있다.
Assign 컨테이너를 채우는 것을 보다 쉽게 만들어 주는 유틸
Bimap 쌍방향 map 라이브러리. Boost.Bitmap 을 사용하면 map 의 key 와 value 모두를 key 로 사용할 수 있는 결합 컨테이너 를 생성할 수 있다.
Dynamic Bitset
bit 집합을 나타내는 class. operator[] 를 사용하여 각 bit 에 접근할 수 있으며, 모든 비트 연산자를 바로 사용할 수 있다. 집합에 들어있는 bit 의 갯수는 실행 시간에 dynamic_bitset 의 생성자의 인자를 사용하여 지정할 수 있다.
Fusion
다양한 컨테이너나 알고리즘 등을 통합한 tuples 을 만들 수 있도록 도와주는 라이브러리.
Intrusive
컨테이너와 알고리즘을 조합하여 사용할 수 있는 일반화 객체
Iterators
두 가지 기능을 지원한다. 첫 째, c++ 표준 반복자 개념을 확장한 시스템. 두 번째는 확장된 반복자 개념과 몇 가지 유용한 반복자 아답터를 포함하는 기능을 기본으로 하여 새로운 반복자를 만들어 낼 수 있도록 컴포넌트화 하는 것이다.
Multi-Array
일반화된 N차원 배열을 정의하거나 공용 인터페이스를 구성할 수 있도록 도와주는 라이브러리
Multi-Index
하나 혹은 그 이상의 인덱스를 가지고 있는 컨테이너를 만들고 정렬하거나 접근할 수 있도록 도와주는 multi_index_container
Property Map
맵의 키와 값을 연결 시킬 수 있는 인터페이스를 정의할 수 있도록 도와준다.
Variant
안전하고 일반화 되어 있으며 스텍 기반의 판별 결합 컨테이너(descriminated union container)
Call Traits 파라메터를 넘기기 위한 최적의 방법(어떤 타입 T 의 value, reference, const reference, 함수 인자(const T&) )을 제공한다.
Conversion C++ 표준 cast 를 보완하기 위한 변환 함수를 제공한다.
Concept Check 일반화 프로그래밍을 위한 도구. 컴파일러가 보여주는 복잡하고 이해할 수 없는 템플릿 에러 메시지를 이해할 수 있도록 바꾸어 준다.
Enable If 함수 템플릿 혹은 클래스 템플릿을 특화할 때 인자에 제약을 줄 수 있는 도구
MPI
메시지 교환 인터페이스를 제공하는 라이브러리, 분산 메모리에서 병렬 응용 프로그램들이 사용할 수 있도록 고완되었다.
Sprint
인라인 c++ 의 EBNF 문법을 바로 분석할 수 있는 LL 파서
Tuple
여러 값을 반환할 수 있는 함수를 정의할 수 있게 해준다.
Type Traits
타입을 프로퍼티로 사용할 수 있게 해준다.
Typeof
Wave
표준을 따르며, 반복자 인터페이스로 쉽게 c++ 프리 프로세서의 고수준 설정을 구현할 수 있게 도와준다.
Xpressive
문자열이나 템플릿으로 만들 수 있는 정규식으로 다른 정규식들과 결합하거나 context-free grammer 에 의한 재귀적 사용이 가능하다.
---------------- [ Math ] ----------------
Integer
1999 년 C 표준의 <stdint.h> 의 기능 강화판
Interval
수리적 범위를 처리하기 위한 함수들을 확장시켰다.
MPL
컴파일 시간에 수행되는 알고르즘, 반복, 메타 함수를 구현하기 위한 고수준의 메타 프로그램 제작을 위한 프레임워크. 기본적인 개념과 c++ 문법안에서 쉽고 즐겁게 메타 프로그래밍을 할 수 있도록 도와주는 광범위하고 강력하며 일관된 도구들을 지원한다.
Math
수학 라이브러리. 실시간 혹은 컴파일 타임에 계산할 수 있는 GCD(Greatest Common Divisor, ㅎㅎ;지금 보니 최대공배수네요) 와 LCM(Least Common Multiple, 최소공배수) 라이브러리를 제공한다. Special Functions 는 현재 버전에서는 8개의 특수한 함수를 제공한다. Complex Number Inverse Trigonometic Functions 는 C++ 표준에 있는 삼각 함수의 역함수를 제공한다. Quaternions 는 3차원 공간에서 회전을 위해 종종 사용하는 복잡한 숫자들의 관계를 알아내는데 도움을 줄 수 있다. Octonions 는 quaterinos 처럼 복잡한 숫자들의 관계를 규명하는데 도움을 줄 수 있는 라이브러리 이다.
In Place Factory, Typed In Place Factory
다양한 인자 리스트를 포함할 수 있는 객체를 내부에 생성할 수 있도록 고안된 일반화 생성기
---------------- [ Image ] ----------------
GIL
일반화된 이미지 라이브러리.
Graph
BGL 그래프 인터페이스와 그래프 컴포넌트들을 STL 처럼 일반화 하였다.
---------------- [ String ] ----------------
Format formatting 된 stream 을 만들기 위한 강력한 library.
Regex
정규식 라이브러리
String Algo
문자열 알고리즘 라이브러리
Tokenizer
문자열이나 문자 패턴을 을 나눈다.
---------------- [ System ] ----------------
Filesystem portable file library
IO State Savers
boost 의 I/O 보조 라이브러리로써 매우 많은 개수의 boost 헤더 파일들을 분류하여 사용하기 편하게 해준다. 이 보조 라이브러리는 표준 I/O 라이브러리를 사용한 매우 다양한 아이템들을 포함하고 있다.
System
운영체제를 지원하는 라이브러리
Thread
포팅 가능한 c++ 멀티 쓰레딩
---------------- [ ETC ] ----------------
CRC 템플릿 기반으로 작성된 두개의 CRC 객체와 두개의 함수를 제공한다.
Compatibility
Boost 의 일부 라이브러리가 표준 라이브러리와 호환되지 않을 경우 도움을 줄 수 있다. 언젠가 이 라이브러리가 필요 없는 날이 오기를 바란다:D
Compressed Pair
std::pair 와 유사하지만 비어있는 맴버가 있는 경우 최적화를 시도한다.
Date Time
일반화 프로그래밍으로 만들어진 날짜/시간 라이브러리
Foreach
for_each 강화 버전. iterator 를 이용하는 for 문을 perl 과 같이 단순화
Interprocess
공유 메모리, 메모리를 파일에 맵핑 시키기, 프로세스 공유가능한 뮤텍스, 상태 변수들, 컨테이너, 할당자
Iostreams
스트림, 스트림 버퍼, I/O 필터를 제공한다.
Parameter
이름으로 함수 인자를 구별할 수 있도록 해줌
Pool
메모리 풀 관리자
Preprocessor
반복, 재귀를 포함한 메타 프로그래밍 도구
Program Options
커맨드 라인이나 설정 파일과 같은 편리한 인터페이스로 프로그램 옵션을 설정할 수 있도록 도와주는 라이브러리
Python
파이썬과 c++ 의 연동을 지원하는 프레임워크. 빠르고 균일하게 c++ 클래스의 함수나 객체들을 파이썬에서 사용할 수 있게 만들어 주며 다른 특별한 도구를 추가로 실행할 필요가 없다. (c++ 컴파일러만 있으면 된다.)
Random
랜덤 숫자를 생성하기 위한 완벽한 시스템이다.
Range
새로운 반복자 개념을 사용한 일반화 알고르즘을 위한 인프라
Ref
함수에 레퍼런스를 전달하는 것을 도와주는 유틸리티 라이브러리
Serialization
persistence 와 마샬링을 위한 serialization
Signals
콜벡으로 구현할 수 있으며 관리되는 시그널과 슬롯
Statechart
복잡한 유한 상태 오토마타를 일기 쉽고 유지 보수하기 쉽게 구현할 수 있도록 도와준다.