Boost
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、C++のコミュニティおよびライブラリについて説明しています。その他の用法については「ブースト」をご覧ください。

Boost C++ Libraries

最新版1.85.0 / 2024年4月15日 (34日前) (2024-04-15)[1]
リポジトリ

github.com/boostorg/boost

対応言語C++
種別ライブラリ
ライセンスBoost Software License
公式サイトwww.boost.org
テンプレートを表示

Boost (ブースト)とは、C++の開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースのソフトウェアライブラリのことを指す。
概要

コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。その後もOptionalやAnyなどがC++17規格で導入されており、影響を与え続けている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。

Boostで公開されるライブラリはコミュニティの公開レビューによって精選されている。Boostを使用して作成したプログラムは、商用、非商用を問わず無償のBoost Software Licenseの下でライセンスされる。

Boostはテンプレートなどを活用して積極的にメタプログラミングジェネリックプログラミングの技法を取り入れて行く傾向がある。そのためBoostライブラリの利用者にはC++の現代的な記述に慣れていることを要求される。
内容

Boostには次のような分野のライブラリが含まれている。ヘッダーをインクルードするだけで使えるクラステンプレートや関数テンプレートが多いが、ライブラリの一部はビルドが必要。

アルゴリズム

ジェネレータ

random - 疑似乱数[2]

uuid - UUID[3]


並列プログラミング(非同期プログラミング)

thread - スレッド

context - ユーザーレベルコンテキストスイッチ

coroutine - コルーチン

fiber - ファイバー

compute - OpenCLベースのマルチコアCPU/GPGPU演算プラットフォームインターフェイス


コンテナ

array - STLコンテナ方式による固定長配列の管理

Boost Graph Library (BGL) - 総称的グラフコンテナ、コンポーネント、アルゴリズム

multi-array - N次元配列の生成の単純化

multi-index containers - 異なるソートとアクセスセマンティクスを可能にするビルトインインデックスのあるコンテナ

pointer containers - 値へのポインタを素直に管理できるようにする標準的なSTLコンテナをモデルにしたコンテナ

property map - コンセプト的なインターフェイス仕様とキー値をオブジェクトにマップするための多目的インターフェイス

variant - コンパイル時に指定する型の集合から選べる型オブジェクトの効率的なストレージと、それにアクセスする型安全で総称的なスタックベースのオブジェクトコンテナ

any - あらゆる型の値を格納することができる動的型(ヘテロジニアスコンテナ[4]


正当性とテスト

concept check - 指定可能なテンプレートパラメータ(コンセプト)を制限できるようにする

static assert - コンパイル時アサートのサポート

Boost Test Library - テストプログラムの作成、テストケースとテストスイートによるテストの構成、そしてそれらの実行制御のためのコンポーネントの組み合わせ。


データ構造

dynamic_bitset - 動的なstd::bitset-に似たデータ構造


関数オブジェクト高階プログラミング (無名関数など)

bindとmem_fn - 関数、関数オブジェクト、関数ポインタおよびメンバ関数のための汎用バインダ

function - 遅延呼び出しのための関数オブジェクトのラッパー。コールバックのための汎用的なメカニズムも提供される。

functional - C++標準ライブラリで定義される関数オブジェクトのアダプタの強化。以下の内容を含む。

function object traits

negators

binders

adapters for pointers to functions

adapters for pointers to member functions


hash - C++ Technical Report 1 (TR1) で定義されているハッシュ関数オブジェクトの実装。ソートされていない連想コンテナのデフォルトのハッシュ関数として利用できる。

lambda - ラムダ抽象化の考え方で、プレースホルダー (placeholders) を使用して、小さい無名関数オブジェクトを定義できるようにする。特にアルゴリズムからの遅延呼び出しを使って、呼び出し地点でのこれらのオブジェクトの操作を可能とする。

ref - 標準C++の参照の能力を強化するため、特に関数テンプレートで利用するための、ユーティリティクラステンプレートを提供する。

result_of - 関数オブジェクトの戻り値の型を取り出す。関数の型を定義するのに役立つ。

signals2 - 管理されたシグナルとスロットのコールバック実装


総称プログラミング

Graphs

入出力

言語間サポート(Python用)

イテレータ

iterators

operators - ユーザー定義のイテレーターのための演算子をオーバーロードしてクラスが算術計算に適用できるようにするクラステンプレート。

tokenizer - シーケンス内に含まれるトークンのセットをコンテナとして見えるようにしてイテレーターでアクセスできるようにする。


数学と計算

QVM - 3次元コンピュータグラフィックスプログラミングで多用される固定サイズのクォータニオンベクトル行列


メモリ(参照カウントによるスマートポインタなど)

pool - 分割されたストレージベースのシンプルなメモリ管理スキームを提供する。

smart_ptr - 様々なポインタ管理方式によるスマートポインタクラステンプレートのコレクション。

scoped_ptr - ポインタ(単一のオブジェクト)を所有する。

scoped_array - 配列用のscoped_ptr。

shared_ptr - 他のshared_ptrと共有できるポインタ。最後のshared_ptrが破棄されたときにポインタを破棄する。

shared_array - 配列用のshared_ptr。

weak_ptr - すでにshared_ptrで管理されているオブジェクトへの「弱い参照」を提供する。

intrusive_ptr - ポインタが提供する参照カウンタを使用するshared_ptrに似たクラス。


utility - 以下のようなその他のクラス。

base from member idiom - 派生クラスのコンストラクタの初期化子でベースクラスのメンバを初期化する必要のあるクラスのための回避策を提供する。

checked delete - 不完全な型へのポインタを使用してオブジェクトまたはオブジェクトの配列を破棄しようとする試みをチェックする。

next and prior functions - 特に操作の結果が異なるイテレーターに保存されている必要がある(つまりオリジナルのイテレーターを変更できない)場合に、前方向または両方向のイテレーターをより簡単に操作できる。

noncopyable - コピーコンストラクタと代入演算子を禁止できる。

addressof - operator&()演算子のオーバーロードをバイパスしてオブジェクトの実際のアドレスを取得できるようにする。

result_of - 関数の型を定義するのに役立つ。



@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}その他[要説明]

構文解析

プリプロセッサメタプログラミング

文字列とテキスト処理(正規表現など)

lexical_cast - テキストとの型変換

format - タイプセーフな引数のフォーマット文字列

iostreams - 新しい送受信フィルタフレームワークのためのC++ストリームとストリームバッファの補助

regex, xpressive - 正規表現のサポート

Spirit - オブジェクト指向的な再帰的下向き構文解析ジェネレーターのフレームワーク。

string algorithms - 文字列に関する様々なアルゴリズムのコレクション。

tokenizer - 文字列やその他の文字シーケンスをトークンで分割できるようにする。

wave - C99/C++のプリプロセッサ機能の標準に準拠した実装。使いやすいインターフェイスでラップされている。


テンプレートメタプログラミング


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:31 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef