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
テンプレートを書いていて、推論された型を確認したい テンプレートを記述していると 「この引数を与えたときには、Tがどう推論されるのか?」 なんて思うことは良くありますよね? 嗚呼、そんなとき、どーしたらよいのでしょーか? たとえば template < typename T > void f(T&&){} void g(int const&){}; int main(){ f(g); } この場合のTがどう推論されるのか知りたい! と思ったとき、どうしますか? 諦める IDEに頼る typeid.name()を使う Boost.Typeindexを使う Attributeを使う(C++14) IDEに頼る フォーカスすると情報が表示されるのを利用する IDEを使っている場合は概ねこれで事足りる typeid.name()を使う ヘッダをインクルードして この方法では実行時までわからない型情
概要 シミュレーションなどではよく、微分方程式に従った時間発展を計算することがあります。そういった計算には、オイラー法やルンゲ・クッタ法と呼ばれるアルゴリズムを用いるのですが、自分でそうしたコードを記述するのは面倒だしバグの元でもあります。 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する手間が減る ネストし
2017/6/3に開催されたUnity道場 博多スペシャルの講演スライドです。 講師:安原 祐二(ユニティ・テクノロジーズ・ジャパン合同会社) 講演動画:https://youtu.be/uKWLPU8gfIY 知ってはいるけれどピンとこない、知ってはいるけれどピンとこない、そんなクォータニオンについて基本となる概念からたっぷりと、丁寧に説明していきます。行列についても解説しますので、これからシェーダプログラミングに取り組もうとするエンジニアにも役に立つ内容です。数学に苦手意識のある人も、この機会にマスターしてしまいましょう! こんな人におすすめ ・プログラマ全般および数学に興味のある人 受講者が得られる知見 ・クォータニオンの意味 ・行列とクォータニオンの関係 ・数学的な背景 Unityのイベント資料はこちらから: https://www.slideshare.net/UnityTech
7. でも #include <iostream> #include <boost/preprocessor/repetition/for.hpp> #include <boost/preprocessor/arithmetic/dec.hpp> #define M1(r, x) BOOST_PP_FOR(x, P, OP, M2) #define M2(r, x) x, #define P(r, x) x #define OP(r, x) BOOST_PP_DEC(x) int main() { int xs[] = { BOOST_PP_FOR(5, P, OP, M1) }; // A. for (auto x : xs) std::cout << x << ' '; } > 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 BOOST_PP_FORの中でBOOST_PP_
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
6. 話さないこと • • • std::rand() 数学的な詳細 エンジンアダプタ • discard_block_engine(Boost, C++11) • shuffle_order_engine(Boost, C++11) • independent_bits_engine(Boost, C++11) • addive_combine_engine(Boost) • xor_combine(Boost) 8. 基本的な使い方 • 以下は、メルセンヌ・ツイスター擬似乱数生成器と一様整数分布を使用し て、[0, 3](0以上3以下、と読む)の値を等確率で分布させる処理。 using namespace boost::random; random_device seed_gen; mt19937 engine(seed_gen()); uniform_int_distribution
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く