boost チュートリアル
ブーストを開始する
サーチ…
備考
ブーストとは何ですか?
Boostは、幅広いトピックをカバーする無料の高品質なC ++ライブラリの大規模なコレクションです。 C ++の多くの一般的な問題はBoostを使って解決されるため、C ++の「第2の標準ライブラリ」とみなされることがよくあります。
boost.orgから:
Boostは、無料のピアレビューポータブルC ++ソースライブラリを提供します。
私たちは、C ++標準ライブラリとうまく機能するライブラリを強調します。 Boostライブラリは、幅広く有用であり、幅広いアプリケーションにわたって使用可能であることが意図されています。 Boostライセンスは、商用および非商用の両方の使用を推奨します。
いくつかのBoostライブラリはさえてきた自分の道を作ったようなC ++ 11標準ライブラリ、およびいくつかの他、にBoost.OptionalとBoost.Variant 、C ++ 17の一部となります。
ブーストは何をすることができますか?
Boostはプログラミングの大部分をカバーします。スタックオーバーフローのboostタグwikiから:
以下のライブラリが含まれています:
- 文字列とテキスト処理
- コンテナ
- イテレータ
- アルゴリズム
- 関数オブジェクトと高次プログラミング
- 汎用プログラミング
- テンプレートメタプログラミング
- プリプロセッサメタプログラミング
- 並行プログラミング
- 数学と数値
- 正しさとテスト
- データ構造
- 画像処理
- 入出力
- インター言語サポート
- メモリ
- 解析
- プログラミングインタフェース
- 雑
- 壊れたコンパイラの回避策
バージョン
| バージョン | 新しいライブラリ | リリースノート | 発売日 |
|---|---|---|---|
| 1.10.0 | ノート | 1999-12-14 | |
| 1.11.0 | 有理数 | ノート | 2000-02-01 |
| 1.12.0 | ノート | 2000-02-23 | |
| 1.13.0 | ユーティリティ、タイプ特性、コール特性、圧縮ペア | ノート | 2000-02-29 |
| 1.14.0 | ノート | 2000-03-05 | |
| 1.15.0 | 乱数 | ノート | 2000-06-17 |
| 1.16.0 | 機能的なイテレータヘッダ | ノート | 2000-06-28 |
| 1.17.0 | アレイ | ノート | 2000-08-03 |
| 1.18.0 | グラフ、正規表現 | ノート | 2000-09-28 |
| 1.19.0 | コンセプトチェック、Python、静的アサート、 プロパティマップの概念 | ノート | 2000-12-10 |
| 1.20.0 | 変換 | ノート | 2001年1月6日 |
| 1.21.0 | イテレータアダプタ、プール、テスト | ノート | 2001年03月09日 |
| 1.22.0 | CRC | ノート | 2001-05-25 |
| 1.23.0 | 任意、関数、トークナイザ、 特殊関数、Octonions、Quaternions | ノート | 2001年7月6日 |
| 1.24.0 | タプル | ノート | 2001-08-19 |
| 1.25.0 | スレッド、バインド | ノート | 2001年10月1日 |
| 1.26.0 | 共通因子、プリプロセッサ | ノート | 2001-11-30 |
| 1.27.0 | ノート | 2002-02-05 | |
| 1.28.0 | ラムダ、I / O状態セーバー | ノート | 2002-05-15 |
| 1.29.0 | 日時、ダイナミックビセット、フォーマット | ノート | 2002年10月10日 |
| 1.30.0 | ファイルシステム、オプション、間隔、MPL、スピリット | ノート | 2003年03月19日 |
| 1.31.0 | enable_if、バリアント | ノート | 2004年01月26日 |
| 1.32.0 | 割り当て、Minmax、マルチインデックス、 数値変換、プログラムオプション、範囲、 シリアライゼーション、文字列、トリブール | ノート | 2004年11月19日 |
| 1.33.0 | Iostream、ハッシュ、パラメータ、 ポインタコンテナ、Wave | ノート | 2005-08-11 |
| 1.34.0 | Foreach、Statechart、TR1、Typeof、Xpressive | ノート | 2007-05-12 |
| 1.35.0 | Asio、Bimap、循環バッファ、関数型、 フュージョン、GIL、プロセス間、侵入型、 数学/特殊関数、 数学/統計分布、MPI、システム | ノート | 2008年3月29日 |
| 1.36.0 | アキュムレータ、例外、ユニット、順序付けなし | ノート | 2008-08-14 |
| 1.37.0 | プロト | ノート | 2008-11-03 |
| 1.38.0 | フライウェイト、スコープ終了、スワップ | ノート | 2009-02-08 |
| 1.39.0 | シグナル2 | ノート | 2009-05-02 |
| 1.40.0 | ノート | 2009-08-27 | |
| 1.41.0 | プロパティツリー | ノート | 2009-11-17 |
| 1.42.0 | ウイッド | ノート | 2010-02-02 |
| 1.43.0 | ファンクショナル/ファクタ、ファンクショナル/フォワード | ノート | 2010-05-06 |
| 1.44.0 | メタステートマシン、ポリゴン | ノート | 2010-08-13 |
| 1.45.0 | ノート | 2010-11-19 | |
| 1.46.0 | Icl | ノート | 2011-02-21 |
| 1.46.1 | ノート | 2011-03-12 | |
| 1.47.0 | クロノ、幾何学、フェニックス、比率 | ノート | 2011年7月11日 |
| 1.48.0 | コンテナ、ロケール、移動 | ノート | 2011-11-15 |
| 1.49.0 | ヒープ | ノート | 2012-02-24 |
| 1.50.0 | アルゴリズム、Functional / OverloadedFunction、 LocalFunction、ユーティリティ/ IdentityType | ノート | 2012-06-28 |
| 1.51.0 | コンテキスト | ノート | 2012-08-20 |
| 1.52.0 | ノート | 2012-11-05 | |
| 1.53.0 | 原子、コルーチン、Lockfree、多重精度、 オデント | ノート | 2013-02-04 |
| 1.54.0 | ログ、TTI、タイプ消去 | ノート | 2013-07-01 |
| 1.55.0 | Predef | ノート | 2013-11-11 |
| 1.56.0 | Align、TypeIndex | ノート | 2014-08-07 |
| 1.57.0 | ノート | 2014-11-03 | |
| 1.58.0 | エンディアン、ソート | ノート | 2015-04-17 |
| 1.59.0 | Convert、Coroutine2 | ノート | 2015-08-13 |
| 1.60.0 | VMD | ノート | 2015-12-17 |
| 1.61.0 | 計算、DLL、ハナ、メタパース | ノート | 2016年5月13日 |
| 1.62.0 | ファイバ、QVM | ノート | 2016-09-28 |
| 1.63.0 | ノート | 2016-12-26 | |
| 1.64.0 | プロセス | ノート | 2017-04-19 |
インストールまたはセットアップ
Boost Getting Startedを参照してください。
Boostライブラリのほとんどはヘッダーのみです。つまり、コンパイルやリンクする必要はありません。
Boostの最新バージョンを入手していることを確認してください:
- www.boost.orgをご覧ください。
- 現在のリリースのダウンロードを探します。現在、ここにリンクしています 。
- お使いのオペレーティングシステムに適したアーカイブファイルを選択し、ダウンロードします。
ヘッダーのみのライブラリは、それぞれのヘッダーファイルを単純にインクルードすることで使用できます。
いくつかのBoostライブラリにはコンパイルが必要です:
- ブースト。クロノ
- Boost.Context
- ブースト。ファイルシステム
- Boost.GraphParallel
- ブースト。アイスストリーム
- Boost.Locale
- ブースト.MPI
- Boost.ProgramOptions
- Boost.Python
- Boost.Regex
- ブースト。シリアル化
- ブースト信号
- Boost.System
- Boost.Thread
- Boost.Timer
- Boost.Wave
また、以下のライブラリには、コンパイルが必要なコンポーネントがあります。
Boost.DateTime
ブースト。グラフ
ブースト。数学
Boost.Random
Boost.Test
Boost.Exception
Boostのソースは、サイトのダウンロードリンクから入手することができます。これにより、 SourceForgeのページに最新バージョン(2016年7月現在、 1.61.0)がリダイレクトされます。これはディレクトリ(C:\ local \ boost_1_61_0など)に解凍(un-taredなど)することができます。このディレクトリは、作成しているソフトウェアのインクルードパスに追加することができます。この後、 #include <boost/header/path.hpp>使ってC ++ファイルにBoostヘッダを含めることができます。
Boostのライブラリの大半はヘッダーのみです。これらだけが必要な場合は、上記のソース配布がすべて必要です。ただし、コンパイルされたバイナリをビルドする必要があるライブラリの1つを使用する必要がある場合は、それも必要になります。
どのシステムでも、正しいバイナリを取得する最も信頼性の高い方法は、自分でビルドすることです。これらの指示は、 WindowsまたはLinux / Unix / POSIXでは若干異なります 。
Visual Studioを使用するWindowsでは、ライブラリを自分で作成する代わりに、 BoostのSourceForgeページ (2016年7月現在の1.61.0)からあらかじめ構築されたライブラリをダウンロードすることができます。このページでは、特定のVisual Studioビルドのバージョンをインストールするインストーラ、またはサポートされているすべてのVisual Studioバージョンのバイナリを含む7-zipファイル(boost_X_XX_X-bin-all-32-64.7z)を選択できます。これらのオプションには、ソース/ヘッダーとバイナリが含まれているため、上記のソース配布をダウンロードする必要はありません。 C:\ local \ boost_1_61_0などのディレクトリに展開/インストールし、そのディレクトリをインクルードパスに追加し、使用しているVisual Studioのバージョンに対応するバイナリを含むディレクトリを追加します(例:C: Visual Studio 2013 32ビットプロジェクトの場合はローカル\ boost_1_61_0 \ lib32-msvc-12.0)をライブラリパスに追加します。
Boostのインストールと実行(Cygwin)
(初心者レベル、IDE:CLion)
まず、Cygwinミラーからブーストをインストールします:install exeを開き、boostを検索し、パッケージをインストールします。
boostがインストールされた後、 /usr/include/boostます。これがすべてです。すべての#include文は、 #include <boost/archive/text_oarchive.hpp>ように、boostフォルダのパスになります。
あなたが選択したブーストファイルを.cppファイルに含めると、ライブラリーをリンク し て、ダウンロードしたブーストコードを検索するようにcmakeに指示するまで、IDEは選択したIDEでコンパイルされません。
あなたのブーストコードを検索するには、
find_package(Boost 1.60.0 COMPONENTS components_you_want)
# for example:
find_package(Boost 1.60.0 COMPONENTS serialization)
次に、 include_directories(${Boost_INCLUDE_DIRS})というディレクトリをインクルードしinclude_directories(${Boost_INCLUDE_DIRS})
最後に、実行可能ファイルを追加し、ライブラリをリンクします。
add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
プログラムを起動する前に、何かを含めるかコードを実行する前にboostが見つかったかどうかをテストして、エラーダンプを避けてください:
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(YourTarget ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)
endif()
私は含まれ-missing_libs例えば、 -あなたがに実行されるエラーは、いくつかのブーストライブラリまたは別のがリンクされていないかもしれないということです、そしてあなたはそれを手動で追加する必要がありますので、 リンク 、私は以前の参照を。
まとめて、最終的なCMakeLists.txtファイルは次のようになります:
cmake_minimum_required(VERSION 3.7)
project(your_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(your_project ${SOURCE_FILES})
target_link_libraries(your_project ${Boost_LIBRARIES})
endif()