C++ Library Links
このページの他に、岡野原さんの
"C++の便利ツール・ライブラリ"
がオススメです。
標準ライブラリ
- STL
-
その1。主に、リストやマップなどのコレクションに関する
generic なデータ構造とアルゴリズム。
- iostream
-
その2。ストリーム入出力。
- C.std
-
その3。まだまだ現役。
- boost
-
準標準。上の3つを超強力にした/するライブラリ達の集合体。
並列・ネットワーク・XML
- TBB (Thread Building Blocks)
-
スレッドセーフなコンテナやスレッドをフル活用した並列アルゴリズムなど
- TinyXML
-
名前の通り軽量でまとまってるXMLパーザ。
- MiX
-
Minimalists XML parser。同じくXMLパーザ。
- libcurlpp
-
FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE, LDAP
によるファイル転送をサポート。
- POCO
-
C++ Portable Components。
ネットワーク関係を中心にしたポータブルなライブラリだそうです。
- ACE
-
ADAPTIVE Communication Environment。
ポータブルかつ強力な、ネットワーク&並列ライブラリ。
Addison-Wesley から
本
も出ています。
- Xerces-C++
-
定番XMLパーザ。
- CSE
-
C++ Servlet Environment。名前の通り、C++でServletをやろうというもの。
- CGI++
-
C++ で CGI を作るのに便利なライブラリ。
- gimite::socket
-
WinSock2とPOSIX socketのラッパ。
iostreamのインターフェイスでソケット操作ができる。
データベース
- OTL
-
Oracle、ODBC、DB2-CLI 向けのデータベース操作ライブラリ。
色々
- STXXL
-
メモリに乗らないような巨大なデータをディスク上で扱うためのライブラリ。
STL風のインターフェイス。
- ICU
-
IBMより。文字コード変換やUnicode関係の処理をまとめてこなします。
- SWIG
-
各種スクリプト言語とC/C++を繋ぐ橋渡し。
- caper
-
LALR(1) パーサジェネレータ。
「手書きのパーサですがなにか?」と強弁できるというコンセプト。
- Crypto++
-
古今東西、多数の暗号化やメッセージ認証方式に対応したライブラリ。
- ixlib
-
JavaScriptインタプリタとかGCとかXMLパーザとか正規表現とか、
なんだか色々多彩。
- STLSoft
-
STLをもうちょっと拡張するもの。Windows向け?
- VTL
-
View Template Library。コンテナを、
中の特定の条件を満たす要素だけ取り出したコンテナとしてみるとか、
ある範囲だけのサブコンテナとして見るとか、
各要素にフィルタを噛まして見るとか、そういう感じの。
- CppUnit
-
UnitTestフレームワーク。
- libcwd
-
デバッグ支援。デバッグ用ストリーム処理や、メモリ確保、
クラス名のdemanglingなどが強力です。
- xbyak
-
x86アセンブラライブラリ。実行時のコード生成とか、
スクリプト言語のJITコンパイルなどに使えそうです。
- SoftWire
-
こちらもJIT用ライブラリ。
- libsigc++
-
Callback Framework for C++、とな。boost::signals みたいなもんでしょうか。
- metakit
-
アプリケーション埋め込み型の簡易データベースライブラリ。C++-bindingアリ。
- Aapl
-
二分木とか簡単なFSMとか。
数値計算など
- Eigen
-
行列計算。速くて使いやすいのでおすすめ。
- Blitz++
-
技術計算ライブラリ。行列とか乱数とか差分計算とか他色々。
- MTL
-
Matrix Template Library。
- tvmet
-
こちらもわりと有名な行列・ベクトル演算ライブラリ。
- NTL
-
数論のためのライブラリだそうな。多倍長数とか、
多項式とか群とか体とか。
- LiDIA
-
こちらもNTLと同じような方面。
- XR
-
eXact Real、任意精度の実数演算。
GUI・マルチメディア
- Win32 GUI Generics
-
Win32 API による GUI 作成の、今風C++ラッパ。
- wxWidgets
-
クロスプラットフォームなUI構築。定番。旧wxWindowsが改名。
- Visibility for C++
-
専用のダイアログエディタ等を使わずに C++
のソースからGUI設計できるライブラリらしい。Windows専用。
- Crystal Space
-
3Dグラフィックスのエンジン。
- VIGRA
-
Generic Programming for Computer Vision。
コンピュータビジョン関係のテンプレートライブラリらしいです。
メタプログラミング
- PETE
-
Portable Expression Template Engine ということで、
expression template 技法を汎用化したライブラリ。
- Daixtrose
-
Diffrentiable EXpression Templates - a Reusable Open Source Engine
の略とのこと。こちらもETの汎用化。演算子で書いた式を、
template上でのツリーに展開する枠組みを提供してくれます。
コンパイル時に記号微分ができる、のが "Diffrentiable" の由来らしい。
- Reflection for C++
-
リフレクション。
あるクラスのメソッド一覧を手に入れるとか、
クラス名からそのインスタンスを生成とか。結構無理があるかも…。
- Boost Interfaces Library
-
結局Boostに入ってはいないですが、この名前。
非侵入的に外付けできるインターフェイスを作る技法を汎用化したライブラリ。
マルチパラダイム
- FC++
-
関数型プログラミング in C++。
cons方式リスト、カリー化、関数の中置表記、ML風サブ言語による無名関数生成、
無限リスト、モナド、などなどなど。
- FACT!
-
FC++と同じ方向性の。
- clamp
-
厳密に言うとライブラリじゃないですが。その名も C++ LAmbda Preprocessor で、
C++の式中に無名関数を埋め込むことを可能にするC++のプリプロセッサです。
- LC++
-
論理型プログラミング in C++。
宣言→単一化による推論→答えを返す、
という論理型言語風のプログラムが書けます。
- Loki
-
書籍 Modern C++ Design の Lokiライブラリです。スマートポインタ、
Factory Method, Sigleton などのパターン、DoubleDispatchなどなど。
"ポリシーに基づく設計" という考え方は必読。
- BSFC++
-
bulk synchronous parallel 計算モデルに基づく並行計算ライブラリだそうな。
presented by
k.inaba
(kiki .a.t. kmonos.net)
under