名前空間
変種
操作

オープンソースの C++ のライブラリの一覧

提供: cppreference.com
< cpp‎ | links

このページの目的は、特定の機能を持った実装が必要になった場合に、無駄な時間をかけて Web を検索せずに済むように、オープンソースの C++ のライブラリのわかりやすい一覧を作ることです。

もしあなたが皆の役に立つライブラリをご存知であれば、このページにリンクを追加してください。 ライブラリのソースコードをダウンロードできなければならないという以外に、特に制限はありません。

このページは「as-is」で提供されます。 役に立てばいいなと思ってはいますが、いかなる保証もありません。 一覧は完全なものではありませんし、時代遅れであったり、紛らわしかったり、リンクが間違っている可能性もあります。 何か問題に気づいた場合は、修正いただければ幸いです。

目次

[編集] 汎用

  • Boost -  汎用的なライブラリの大きなコレクション (Boost ライセンス)
  • GSL -  C++ Core Guidelines で Bjarne Stroustrup、Herb Sutter 他により推奨されている Guidelines Support library の実装
  • BDE -  Bloomberg L.P. による Bloomberg Development Environment のコアライブラリ (Apache ライセンス)
  • Dlib -  ネットワーク、スレッド、グラフィカルインタフェース、データ構造、線形代数、機械学習、XML およびテキストのパース、数値最適化、ベイジアンネット、および様々な他のタスク (Boost ライセンス)
  • JUCE -  広範な枯れたクラスプラットフォームの C++ ツールキット (GPL ライセンス)
  • Loki -  デザインパターン
  • Reason -  XML、XPath、正規表現、スレッド、ソケット、HTTP、SQL、日付時刻、ストリーム、エンコードおよびデコード、ファイルシステム、圧縮 (GPL ライセンス)
  • yomm2 -  C++17 用のオープンマルチメソッド (Boost ライセンス)
  • Folly -  Facebook オープンソースライブラリ。 実用性と効率性を念頭に置いて設計された C++11 部品のライブラリ。
  • Abseil -  C++ 標準ライブラリを増強するために設計された Google による C++ ライブラリコードのオープンソースコレクション。
  • cxxomfort - C++ の機能のバックポート (C++11 を C++03 に、および C++1y の提案を C++11/C++03 に)。
  • libsourcey -  高速なネットワーク処理およびメディアエンコード処理のためのクロスプラットフォームな C++11 のライブラリ。 HTTP, WebSockets, TURN, STUN, Symple, など...
  • OnPosix -  POSIX プラットフォーム上で様々な抽象化 (スレッド、ネットワーク、ログ、IPC、など) を提供する C++ のライブラリ。
  • Ultimate++ -  クロスプラットフォームなラピッドアプリケーションデベロップメントフレームワーク
  • CAF - C++ Actor Framework (CAF) は軽量高速なアクタの実装、メッセージ処理、ネットワーク透過なメッセージ処理などの特徴を持つオープンソースな C++11 のアクタモデルの実装です (BSD ライセンス)。
  • cpp-mmf - POSIX または Windows 用のメモリマップドファイルをカプセル化する C++98 のライブラリ
  • CommonPP - プロジェクトのメトリクスを取得することを重視した多目的なライブラリ。 (BSD)
  • Better Enums - constexpr サポート付きのリフレクション対応列挙型 (列挙から文字列、イテレーション、など) (BSD)
  • Smart Enum - 列挙型のための「to_string」「from_string」など。 (Boost ライセンス)
  • nytl - 汎用の C++17 のヘッダオンリーなユーティリティテンプレートライブラリ。 (Boost ライセンス)
  • SaferCPlusPlus -  SaferCPlusPlus - 安全でない C++ のプリミティブ (ポインタ、int、std::vector など) のための安全な互換性のある代替品。 (Boost ライセンス)
  • fcppt -  Freundlich's C++ Toolkit (fcppt) はより安全な型の提供と関数型プログラミングの使用により一般的な C++ のコードを改善することに焦点を当てたライブラリのコレクションです。
  • bitfield.h -  基本言語の機能よりも移植性と柔軟性がある、ビットフィールド構造体。
  • composite_op.h -  基本的なクラスデータメンバのイントロスペクション。 扱いにくく再入不可能なこともありますが、便利なこともあります。
  • Abstract Intrusive Containers -  boost::intrusive よりも柔軟性がありますが、 STL 互換ではありません。
  • Yato -  コンテナ、範囲、イテレータ、型特性およびその他のツールや実験を実装しているモダンな C++(14/17) のクロスプラットフォームな STL スタイルかつ STL 互換なライブラリ (MIT ライセンス)
  • Kangaru -  C++11 および C++14 用の依存性注入コンテナ (MIT ライセンス)
  • yaal -  アルゴリズム、コレクション、任意精度計算、汎用 DSL 文法駆動のパーサ、など (CC BY-ND-NC 4.0)

[編集] 通信

  • libnavajo -  Web および RESTful アプリケーション開発用の HTTP サーバを含む軽量かつ強力な API (SSL、認証、クッキー、セッション管理をサポートし、WebSocket サーバのサポートを含む) (LGPL ライセンス)
  • C++ RESTful framework -  幅広いアプリケーションに組み込むために設計された C++ のマイクロフレームワーク。
  • C++ REST SDK - 非同期 HTTP クライアントおよびリスナー、非同期ストリーム、URI、JSON
  • cpr - モダンな C++ の HTTP リクエストライブラリ
  • cpp-netlib - cpp-netlib: C++ のネットワークライブラリ
  • cpp-redis - C++11 の軽量な Redis クライアント: 非同期、スレッドセーフ、依存なし、パイプライン処理、マルチプラットフォーム。
  • tacopie - C++11 の TCP ライブラリ
  • Boost.Asio - 非同期および同期のネットワーク処理、タイマ、シリアル I/O
  • Boost.Beast - Boost.Asio 上に構築された HTTP および WebSocket のライブラリ
  • gsoap -  XML データバインディング、高速な WSDL/SOAP/XML Web サービス、WS-Security、JSON/XML-RPC RESTful サービスのための C/C++ の開発ツールキット
  • POCO -  ネットワーク処理: 暗号化、HTTP; ZIP ファイル
  • omniORB -  最も高速、完全かつ移植性のある CORBA ORB の C++ の実装
  • ACE -  非同期ネットワーク処理、イベント逆多重化、メッセージ処理
  • TAO -  CORBA
  • wvstreams
  • Unicomm -  非同期なネットワーク処理、高水準な TCP 通信のフレームワーク
  • restful_mapper - RESTful JSON API を使用するための C++ の ORM
  • zeromq -  高速メッセージキュー
  • curlpp -  CURL ライブラリのための C++ のラッパー
  • Apache Thrift -  Apache Thrift ソフトウェアフレームワークは、スケーラブルなクロス言語サービス開発のために、ソフトウェアスタックを C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi, その他の言語間で効率的かつシームレスに動作するサービスを構築するためのコード生成エンジンと組み合わせます。
  • libashttp -  非同期 HTTP クライアントライブラリ
  • Simple C++ REST library -  C++ アプリケーションで REST API を作成するための非常にシンプルな自己文書化されたライブラリ
  • libtins - ネットワークパケット作成・監視ライブラリ
  • PcapPlusPlus - マルチプラットフォームな C++ のネットワーク監視、パケット解析、作成のフレームワーク
  • HTTPP - シンプルな生産準備済みの Boost 上に構築された HTTP サーバおよび libcurl 上に構築されたクライアント。 (BSD)
  • The Silicon C++14 Web Framework - 高速かつ堅牢な Web API (MIT)。
  • ngrest - 高速かつ使いやすい JSON RESTful Web サービスフレームワーク (Apache2)。
  • restc-cpp - C++ から JSON API にアクセスする苦痛を取り除きます。 HTTP クライアント、ネイティブな C++ クラスと JSON の間のシリアライゼーション、boost::asio コルーチンを通した非同期 I/O。 C++14。 (MIT)
  • OpenDDS - DDS の実装
  • Breep -  オブジェクトを直接送受信できるイベントベースの高水準なピアツーピアライブラリ。
  • uvw - libuv のモダンな C++ のラッパー
  • rest_rpc - モダンでシンプルな使いやすい RPC フレームワーク
  • EasyHttp -  可用性と速度に焦点を当てた、 HTTP レスポンスのキャッシュその他をサポートする、クロスプラットフォームな HTTP クライアントライブラリ。 (MIT ライセンス)
  • nghttp2 -  HTTP/2 の C のライブラリおよびツール (サーバ、クライアント、プロキシおよびベンチマーク計測ツール) (MIT ライセンス)

[編集] グラフィカルユーザインタフェース

  • Dear ImGui - 高度に最適化された肥大化しないグラフィカルユーザインタフェイスライブラリ。
  • FLTK
  • nana[doc] - モダンな C++ のスタイルでプログラミングする GUI (Boost ライセンス)
  • WxWidgets[src][doc]
  • OWLNext - Windows 上で標準 C++ で GUI アプリケーションを書くための OWL へのモダンなアップデート
  • tiny file dialogs -  単一の C/C++ のクロスプラットフォームなファイル (初期化なし、メインループなし、6個のモーダルな関数呼び出し)
  • Switch -  Switch.Windows.Forms ライブラリは Microsoft Windows、macOS および Linux で利用可能なリッチなユーザインタフェース機能の利点をフルに活かしたウィンドウベースのアプリケーションを作成するためのクラスを含みます。
GTK+
Qt

[編集] マルチメディア一般

[編集] グラフィックス

  • cairomm
  • nux
  • pangomm
  • gegl
  • stb
  • Adobe/boost GIL -  2D 画像を操作するアルゴリズムに焦点を置いた高水準な汎用のライブラリ。 入出力オプションは非常に制限されています。
  • GraphicsMagick - 88 以上のメジャーなフォーマットの画像を読み書きおよび操作します。 2002 年に ImageMagick からフォークしました。
  • Skia Graphics Engine - Chrome, Chrome OS, Android, さらに Firefox や Sublime Text, Skia_Graphics_Engine でも使用されている、(2005 年の時点の) Google のコアグラフィックスライブラリ
  • Anti-Grain Evolution - クロスプラットフォームな 2D のラスタライズおよびレンダリングエンジン
プロット
フォーマット

[編集] オーディオ

  • soundtouch
  • KFR -  高速でモダンな DSP フレームワーク、DFT/FFT、オーディオリサンプリング、FIR/IIR フィルタ、双二次
  • Aquila -  クロスプラットフォームな DSP ライブラリ
フィンガープリント
フォーマット
タグ
CD

[編集] 画像処理


[編集] 動画

[編集] 3Dグラフィックス

  • Vulkan
  • OpenGL
  • bgfx - クロスプラットフォームなグラフィックス API 非依存の「エンジン/フレームワークを自作する」スタイルのレンダリングライブラリ。
  • Ogre3D
  • Diligent Engine - モダンなクロスプラットフォームな低水準の 3D グラフィックスライブラリ。
  • GLEW - OpenGL の関数のロード処理
  • GLAD - OpenGL の関数をロードするためのカスタマイズ可能な軽量ライブラリ
  • Epoxy - GLEW のモダンな後継。 ある種の GL コンテキスト間の差異を抽象化し、GLEW よりもシンプルに使用できることもあります。 2015 年から GTK+ プロジェクトで使用されています。
  • GLFW - OpenGL ウィンドウマネージャ
  • GLM - レンダリングのためのヘッダオンリーな C++ の数学ライブラリ
  • hlsl++ - HLSL の構文を用いたレンダリングのためのヘッダオンリーな C++ の数学ライブラリ。 SSE と NEON に対応しています
  • assimp - 3D モデルのロード
  • VTK
  • Magnum - ゲームおよびデータの可視化のための軽量かつモジュラーな C++11/C++14 のグラフィックスミドルウェア
  • Irrlicht
  • Horde3D
  • Visionaray - C++ のレイトレーシングテンプレートライブラリ
  • Open CASCADE - 3D CAD/CAM/CAE アプリケーションのための SDK
  • OpenSceneGraph

[編集] ゲームエンジンアーキテクチャ

[編集] 国際化

  • IBM ICU
  • gettext
  • spirit-po -  po ファイルをパースし GNU libintl に似たインタフェースを提供する小さなヘッダオンリーのライブラリ。 boost::spirit をベースにしています。

[編集] 数学

線形代数
最適化
  • OptimLib -  非線形関数のための数値最適化法の C++11 のライブラリ。
グラフ理論
数値用のクラスライブラリ
機械学習
  • stats++
  • liblinear
  • Dlib -  machine learning tools
  • MLPACK -  machine learning package
  • Shogun -  大規模な機械学習の道具箱
  • FANN -  Fast Artificial Neural Network Library
計算幾何
  • CGAL -  Computational geometry algorithms library
  • Wykobi -  計算幾何ライブラリ
  • PCL -  Point Cloud library
オートマトン
  • yasmine[src][doc] - C++11 の UML 状態機械フレームワーク

[編集] 物理およびシミュレーション

  • ReactPhysics3D -  3D のシミュレーションおよびゲームのための C++ の物理エンジンライブラリ
  • ProjectCHRONO -  オープンソースの複数物理シミュレーションエンジン
  • Bullet -  ゲーム、ビジュアルエフェクト、ロボティクス、および強化学習のための物理シミュレーション

[編集] 金融計算

  • QuantLib - 定量的な財務ライブラリ

[編集] 並行処理

  • Intel TBB
  • OpenMP
  • Cpp-Taskflow - タスク依存関係付きの高速な C++ の並列プログラミング
  • RaftLib - 並行アクタライクな C++ のストリーム
  • Thrust - CUDA 用の STL ライクなアルゴリズムとデータ構造
  • ViennaCL - OpenMP, CUDA, OpenCL バックエンドを持つ線形代数とアルゴリズム
  • VexCL - OpenCL および CUDA 用の C++ の式テンプレートライブラリ
  • Boost.Compute - OpenCL 用の (非公式な) STL ライクなアルゴリズムとデータ構造
  • Boost.Interprocess
  • Boost.Thread
  • Boost.Atomic
  • Boost.Lockfree
  • Boost.MPI
  • Boost.Context
  • libopenmpi
  • libsimdpp
  • HPX - 任意の規模の分散アプリケーションと並列処理のための汎用の C++ ランタイムシステム
  • KOKKOS - 移植性のある高性能 HPC アプリケーションを書くための C++ のプログラミングモデル
  • SObjectizer - アクタと出版購読モデルを用いることによる C++ での並行処理およびイベント駆動のアプリケーションの開発を単純化するための小さなフレームワーク。
  • BlockingCollection .NET BlockingCollection をモデルとした C++11 のスレッドセーフなコレクションクラス。

[編集] コンテナ

  • Boost.Any
  • Boost.Array
  • Boost.Bimap
  • Boost.Container
  • Boost.Fusion
  • Boost.Heap
  • Boost.Pointer Container
  • Boost.Tuple
  • Boost.Variant
  • cpp-btree -  btree_map、btree_set、btree_multimap、btree_multiset。
  • TdhLists
  • strict_variant - C++11 をターゲットとした高速な決して空にならない variant。 多くの望まない暗黙の変換を防ぎます。
  • eggs::variant - Eggs.Variant は C++11/14 の汎用的で型安全な差別化された union です。 特に非常に良い `constexpr` サポートを持つ点が注目に値します。
  • Ygg - 赤黒木、区間木、区間マップなどの高性能なコンテナとデータ構造の侵入的な C++11 の実装。
  • plf::list - キャッシュ親和性のために範囲スプライシングを犠牲にした、挿入、削除、反復が高速な std::list の実装。
  • plf::stack - スタックの文脈において std::vector や std::deque よりも良い性能を持つ std::stack コンテナアダプタ用の代替コンテナ。
  • plf::colony - 挿入や削除に関係なく削除されていない要素への有効なポインタを維持する、変更頻度の高いシナリオにおいて std:: コンテナを凌駕する性能を持つ、非順序の「バッグライクな」コンテナ。
  • ring_span - Arthur O'Dwyer の ring_span すなわち循環バッファビューの単純化した実装。

[編集] メタプログラミング

  • Boost.MPL - C++03 をターゲットにした、遅い、オリジナルのメタプログラミングライブラリ
  • Boost.Hana - 型と値両方のための新しいメタプログラミングライブラリ
  • Boost.Mp11
  • Boost.CallableTraits
  • Metal - 100% SFINAE フレンドリーな、SLOC に対して最適化された、(MPL のような) 遅延メタ関数を使用します
  • Brigand - 最高の性能に対して最適化された、先行メタ関数を使用します
  • Meta - metal と brigrand の中間の性能の、先行メタ関数を使用します
  • Boost.Metaparse - コンパイル時文字列から型、値、およびメタ関数を生成する、コンパイル時パーサライブラリ
  • Boost.Proto - 式テンプレートを用いた EDSL を構築するためのライブラリ
  • CoMeta - 軽量なヘッダオンリーの C++14 のメタプログラミングライブラリ
  • visit_struct -  C++11 用の構造体のビジターを提供する、ミニチュアリフレクションライブラリ。 自己完結している 100~200 行 (数え方による) のコード。

[編集] シリアライズ

[編集] テスト

  • Boost.Test
  • cppunit
  • Google Test
  • Catch2
  • doctest -  ユニットテストおよび TDD のための最も軽量で機能の充実した C++ の単一ヘッダテストフレームワーク
  • liblittletest -  移植性のある、単一のファイルのヘッダオンリーなテストフレームワーク
  • ELFspy -  フェイクとスパイを用いて隔離したテスト - Linux のみ

[編集] ベンチマーク

  • Celero
  • gperftools -  「Google Performance Tools」には高性能かつマルチスレッド化された malloc の実装およびヒープ確保や CPU 使用率をベンチマークするためのツールが含まれます。
  • plf::nanotimer -  オーバーヘッドが最も少ない、クロスプラットフォームな、ベンチマーク用のシンプルなタイマークラス。

[編集] XML

  • libxml++
  • pugixml
  • tinyxml
  • tinyxml2 - TinyXML のもうひとつの作業中の実装。
  • Xerces
  • gSOAP -  XML データバインディング
  • ai-xml - 単一の最小限の関数をクラスに追加することによってオブジェクトから XML におよびその逆にシリアライズします。 水面下で libxml++ を使用します。

[編集] JSON

  • json - モダンな C++ 用の JSON
  • ArduinoJson - ArduinoJson
  • jsonme--
  • ThorsSerializer - JSON/YAML 入出力ストリーム
  • JsonBox
  • jsoncpp
  • zoolib
  • JOST
  • CAJUN
  • libjson
  • nosjob
  • rapidjson
  • jsoncons -  jsoncons はツリー構造の JSON 値の構築のための C++ のライブラリです。 イベントベースのストリーミング API もサポートしています。
  • JSON++
  • qjson
  • json-cpp
  • jansson -  Jansson は JSON データをエンコード、デコード、操作するための C のライブラリです。
  • json11 -  json11 は JSON のパースとシリアライズを提供する C++11 用の小さな JSON ライブラリです。
  • JSON Voorhees - C++ 用のキラー JSON
  • jeayeson - 非常に健全な (ヘッダオンリーの) C++14 JSON ライブラリ
  • ujson - µjson は小さな C++11 の UTF-8 の JSON ライブラリです
  • minijson - C++ の DOM なし確保なしの JSON パースおよびシリアライズ
  • jios (JSON Input Output Streams)

[編集] Web

[編集] GPS

[編集] データベース

[編集] 暗号処理

[編集] ファイルのメタデータ

[編集] テキスト処理

パース
  • PEGTL -  Parsing Expression Grammar Template Library
検索
テンプレートエンジン
  • inja -  モダンな C++ 用のテンプレートエンジン

[編集] 端末

  • cwidget
  • replxx -  UTF-8、構文ハイライトおよびヒントをサポートする、 readline と libedit の置き換え。

[編集] コンフィグレーション

[編集] 組み込み言語のバインディング

[編集] 組み込み/リアルタイムシステム

  • QP/C++ -  RTOS カーネル (dual GPL)
  • FreeRTOS C++ Handler -  ハンドラ、ルーパー、状態機械、CLI、移植性あり
  • ETL - Embedded Template Library -  低リソースプラットフォーム向けに調整された C++03 の移植性のあるテンプレートライブラリ
  • distortos -  マイクロコントローラ用のオブジェクト指向 C++ RTOS
  • µcuREST -  マイクロコントローラ用の C++11 の REST/JSON サーバフレームワーク

[編集] PDF

[編集] ログ

  • Log4cpp - ファイル、syslog、IDSA およびその他の宛先への柔軟性のあるログのための C++ クラスのライブラリ (LGPL)
  • Log4cplus - スレッドセーフで柔軟性があり、ログの管理とコンフィグレーションに対する任意の粒度の制御を提供する、ロギング API。
  • spdlog - 超高速なヘッダオンリーの C++ のロギングライブラリ
  • plog - 1000 行未満のコードの移植性のあるシンプルな C++ 用のログ (MPL2)
  • Boost.Log
  • glog - Google Logging Library
  • log4cxx - Apache log4cxx は Apache log4j を真似した C++ 用のロギングフレームワークです
  • Pantheios - 型安全、効率性、汎用性および拡張性の組み合わせを提供する、診断ロギング API ライブラリ

[編集] ソート

  • Timsort - 逆順のまたはほぼソートされたデータに対して、 std::sort を含むクイックソートベースのアルゴリズムを凌駕する性能を持つテンプレート化された安定ソートアルゴリズム。 (MIT)


[編集] 関連項目

非ANSI/ISOライブラリC言語リファレンス