티스토리 뷰

출처 : http://aronze.egloos.com/213805

boost.org 에 있는 boost library 목록 정리


* 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 로 사용할 수 있는 결합 컨테이너 를 생성할 수 있다.

Circular Buffer
STL 과 쉽게 연동하여 사용할 수 있는 순환 버퍼 컨테이너

Disjoint Sets
서로소 집합 연산을 제공하는 컨테이너
* 참조: http://aronze.egloos.com/214354

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)

---------------- [ Network ] ----------------

Asio
portable networking library

---------------- [ Pointer, Functions ] ----------------

Bind
Boost.Bind 는 표준 함수인 std::bind1st 와 std::2nd 함수의 생성기이다. 함수 객체, 함수, 함수 포인터, 멤버 함수 포인터를 지원하며, 함수 형태에 구속받지도 않는다.

Function
지연 호출(deferred calls) 와 callbacks 에 대한 wrappers 함수 객체를 제공한다.

Function Types
함수, 함수 포인터, 함수 레퍼런스, 맴버 함수 포인터 등을 분류하거나 분해, 통합할 수 있는 기능을 제공한다.

Functinal
함수 객체에 대한 wrapper 클래스를 제공한다.

Functional Hash
사용자가 정의한 타입으로 확장할 수 있는 hash 함수 객체. TR1 에 포함되어 있다.

Lambda
실제 호출 위치에 작고 이름없는 함수 객체를 정의할 수 있는 기능을 제공한다.

Member Function
함수/객체/포인터와 맴버 함수를 위한 일반화된 바인더

Pointer Container
힙에 저장되는 다형성 있는 객체를 위한 컨테이너

Smart Ptr
5개의 스마트 포인터 템플릿

---------------- [ Template, Grammers ] ----------------

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 처럼 복잡한 숫자들의 관계를 규명하는데 도움을 줄 수 있는 라이브러리 이다.  

Math Common Factor
최대 공약수, 최소 공배수

Math Octonion

Math Quaternion

Math/Special Functions

Math/Statistical Distributions
통계 분포

Min-Max
최대/최소와 최대/최소 원소를 계사하기 위한 표준 라이브러리의 확장

Numeric Conversion
최적화된 단위전략을 사용한 숫자 변환 모듈

Operators
템플릿 기반 산술 클래스와 반복자

Optional
임의의 값에 대한 판별식

Rational
유리수 클래스

uBLAS
기본 선형 대수학의 행렬, 백터 클래스를 제공한다.

---------------- [ Design pattern ] ----------------

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
복잡한 유한 상태 오토마타를 일기 쉽고 유지 보수하기 쉽게 구현할 수 있도록 도와준다.

Static Assert
컴파일 타임에 assert 를 출력할 수 있게 해준다.

TR1
표준 라이브러리 확장으로 c++ 테크리컬 리포트를 구현하고 있다.

Test
간단한 프로그램 테스트, 전체 유닛 테스트, 프로그램 실행 모니터링을 지원한다.

Timer
이벤트 타이머, 진행되는 타이머, 진행 출력 클래스

Tribool
3가지 상태의 boolean 타입 라이브러리

Utility
복사할 수 없는 클래스를 만들거나 확인후 delete 등의 기능이 있다.

Value Initialized
동일한 문법으로 값을 초기화 할 수 있는 렙퍼 라이브러리

'C++ > boost' 카테고리의 다른 글

Boost C++ Libraries  (0) 2009.12.29
댓글