2010/10/23 Boost.勉強会 #3 関西 プレゼン資料 .pdf とりあえず upload 版Read less

2010/10/23 Boost.勉強会 #3 関西 プレゼン資料 .pdf とりあえず upload 版Read less
BOOST_TEST マクロCatch のアサーションのように、式の各値を出力してくれる機能がついたアサーションです。 Catch に関しては以前のブログを参考にしてください。 #define BOOST_TEST_MODULE example #include "boost/test/unit_test.hpp" int f() { return 42; } BOOST_AUTO_TEST_CASE(test_op_reportings) { int a = 43, b = 42, c = 0; BOOST_TEST(a == b); BOOST_TEST(f() == a); BOOST_TEST(a < b); BOOST_TEST(a - 1 < b); BOOST_TEST(b > a - 1); BOOST_TEST((f() && c)); } こんなふうに出力されます。 |
概略 ログの収集 ログの出力 cmakeによるコンパイル Boost.Logの全体像 (Design overviewより転載) Boost.Logには3つの階層があり、 logger : アプリがログを出力するためのインターフェイス core : 各loggerから取得したログをまとめて、フィルタリングしたりする sink : logをファイルや標準出力したりする(ここでフィルターもできる) アプリ、あるいはモジュールをユーザーが使用する場合 core, logger : アプリ、モジュールが使用 core, sink : ユーザーが使用 のように使う事になります。 loggerはなるべく多くの情報を提供し、ユーザー側がcore/sinkの設定でフィルターします。 特徴 macroを多用する placeholderを多用する 特にplaceholderは慣れると便利なんですが、 Boos
#概要 シミュレーションなどではよく、微分方程式に従った時間発展を計算することがあります。そういった計算には、オイラー法やルンゲ・クッタ法と呼ばれるアルゴリズムを用いるのですが、自分でそうしたコードを記述するのは面倒だしバグの元でもあります。 boostには、そういった常微分方程式の数値解析用ライブラリ、boost::odeint が含まれています。できることを列記してみると、 用途に応じた幅広い常微分方程式計算用アルゴリズムが用意されており、簡単に切り替えも可能 自動で一定時間動かしたり、一ステップごとの処理を自分で書いたりと、目的に応じて幅広く使える エラーに応じた最適なステップ幅の自動計算ができる(controlled_stepper) ステップごとではなく、任意の位置における積分値の取得も可能(dense output stepper) 速度と位置を両方おいかけるような、ハミルトン
この記事は C++ Advent Calendar 2014 18日目の記事です。色々とネタに迷った結果、まだ日本語の解説記事が全然ないodeintを紹介することにします。(なぜこれほど日本語での解説が少ないのか。。) Boost.Odeintとは 皆さんご存知Boostライブラリの1つで、常微分方程式を解くために使います。簡単にいうと という形をした方程式に対して使います。$x$は$t$に依存する変数、つまり$x=x(t)$ですね。これを解くアルゴリズムにはRunge-Kutta法(RK)やその改良版などがあります。Boost.OdeintはこのRK法を実装しています。GPGPUやMPI, OpenMPを利用した並列計算にも対応していますが、今回はそこまで説明しません。 いちばん簡単な方法 数値計算法に馴染みがない人も読むかもしれないので、上記の方程式を解くいちばん簡単な考え方を紹介しま
match function on sum types - std-proposals Vicenteさんが標準向けに提案していた関数を元に、boost::optional用のパターンマッチ関数を作ってみました。 実装 shand/match.hpp shand/type_traits/is_callable.hpp コード例 libs/match/example/match.cpp テスト libs/match/test/match.cpp インタフェース: // shand/match.hpp namespace shand { // 1引数版 template <class T, class F> void match(boost::optional<T>& x, F f); template <class T, class F> void match(const boost::op
ちょっと文章が直訳っぽくてところどころ不自然だけど,丁寧にBoost.MPLの実装(と使い方)について解説してあってとても分かり易い! 個人的な需要にぴったり合ってたこともあると思うけど,MPLの基本的なことを理解するにはかなり良い内容だと思います. ただ,表紙の宣伝文句(メタ言語としてのC++がマスターできる)というのはどうみても誇大広告w (勝手に汲み取った)対象読者 テンプレートの振る舞いが一通り分かる(気がする) ModernC++Designに洗脳された MPLを使いこなせているとは言えない なんという俺! 以下自分なりのダイジェスト. 前半 丁寧なBoost.MPLの解説. この前半の解説が分かり易かった. 書いてあることはMPLのリファレンスとほとんど同じ内容なので,それだけで分かる人はこの本要らないかも. メタ関数転送(継承するだけ) typedefする手間が減る ネストし
Why Boost.Geometry in MySQL? MySQL 5.7のリリースから、そのビルドがBoostに依存するようになります。MySQLの幾何演算を、Boost.Geometryライブラリのコードに置き換えることになったからです。 近年、ロケーションベースのサービスが途方もない成長を続けており、MySQLがそのストレージとして重要視されるようになってきました。 MySQL 5.6時点でも、これまでGIS関係の機能は持っていましたが、その幾何アルゴリズムは多くのコーナーケース(Corner Case:めったに発生しない厄介なケース)を扱えませんでした。それを一つひとつ修正するか、既存のアルゴリズムを置き換えるか、どちらを選ぶかという選択肢で、MySQLはBoost.Geometryで既存アルゴリズムを置き換えることを選択したようです。 MySQLコミュニティはBoost.Geo
Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記事書いてるときもロクに検索してないです。間違いとかあったらすみません。 疑問点とか有りましたら、自分で調べるか、あるいは僕に知らせてもらえると助かります。では、始めましょう。 [最終更新] 応用例にカスタムアロケータでの参照カウント管理を追加: 09/12/16 基本的な使い道 まず基本的なことについては、僕が説明するより、この動画を参照した方が速いでしょう: http://www.ustream.tv/recorded/2981654 それに対するついったーでの突っ込み: http://kiwofusi.sa
新たなBoost本 『Boost C++ Application Development Cookbook』 id:wraith13 さんに送っていただいたので、読んでました。 この本の内容を一言で表すと、boostjpサイトでやっている「Boost逆引きリファレンス」です。 Boostは100以上のライブラリが含まれている巨大なプロジェクトなので、どこから始めればいいかわからない、という方向けに、「こういうことがやりたい!」から「どうやれば?」と調べる本になっています。 英語の本ですが非常に読みやすいので、初めて洋書を読む、という方はこの本から取り組んでみると入りやすいんじゃないかと思いました。 この本の各Tipsは、以下のような構成になっています。 こんなことがやりたい 前準備として、このライブラリのリンクと、このライブラリの知識が必要だよ それをどうやって実現するか この機能は内部的
Visual Studioには2005からDebugger Visualizersという機能がこっそり入っていて そのおかげでSTLコンテナの状態がデバッグウィンドウで見やすくなっています。 デフォルトでDebugger Visualizersが有効になっているので、 vectorをデバッグしてみると以下のようにデバッグウィンドウに表示されます。 Debugger Visualizersを無効にした場合は以下のように表示されます。 これを見れば、Debugger Visualizersのおかげでどれだけ見やすくなっているかがわかると思います。 なんだかよくわからない値ではなく、要素数と要素がはっきりわかるようになっています。 Debugger Visualizersは、コンパイラに同梱されたライブラリのみに適用されるだけでなく ユーザー定義のライブラリにも適用することができます。 Visu
この記事は、C++ Advent Calendar 2013の参加記事です。 今回は、継承を使ったプログラムを、Boost.Variantで置き換えてみよう、というチャレンジ記事です。 まず、継承を使った単純なプログラムを用意します。 update()メンバ関数という共通インタフェースを持ったクラスのオブジェクトをリストとして持つ、というよくあるプログラムです。 #include <iostream> #include <memory> #include <vector> #include <boost/range/adaptor/indirected.hpp> struct UpdateInterface { virtual void update() = 0; }; struct Background : public UpdateInterface { void update() o
2014年6月に開催されたSSII2014(http://www.ssii.jp/)のチュートリアル講演用資料です. 使用したコード等はこちら. https://github.com/norishigefukushima/SSII2014 アブストラクト 「CPUのクロック数が年月とともに増加する時代は終わり、プログラムの高速化をCPUの性能向上に任せることのできるフリーランチの時代は終わりを迎えています。しかしムーアの法則はいまだに続いており、CPUはマルチコア化、SIMD化という形で高性能化が続いています。本チュートリアルでは、計算コストの高い画像処理を高速化するために、CPUの能力をあますことなく引き出す、マルチコアプログラミング、SIMDプログラミングを解説します。」
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く