ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

boost

boost.random使い方簡易まとめ

この記事は boost.randomの使い方の超カンタンなまとめです。使おうとする度に毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回お口チャックマン! つまり使いやすいように自分でまとめるってことなんですね。 サンプルコード やっぱりサンプルコード…

boost::shared_ptr紹介

この記事は TUT Advent Calendar 2014 - Adventarの8日目の参加記事です。 連続値もOKなDeepBeriefNetworkを簡単にC++で実装して・・・とか考えてたんですが、いつの間にか実行速度とか気にしてガチで組み始めて収集つかなくなってもうタイムリミット近いの…

boost.regexに2バイト文字を食わせる

なにがあった 艦これのドロップ報告を解析するプログラムを組んでいる時に全角文字の混じった文字列をboost.regexに食べさせてもうまく動かなかったのでその対処法のメモ。 対処法 w付きのあれこれ使ってcharではなくwchar_tにすればOK。 たとえばこんなかん…

windowsでboostビルドするときのコマンド

何があった 毎回コマンド忘れるのでメモ。 x86とx64で共存できるようにする。 bootstrap.bat b2.exe --build-dir=build/x86 --stagedir=stage/x86 toolset=msvc-10.0 address-model=32 -j9 b2.exe --build-dir=build/x64 --stagedir=stage/x64 toolset=msvc-…

引数のconst参照と値渡しの自動切り替え

なんの話? C++で、サイズの大きいオブジェクトを関数に渡そうと思ったら普通はconstな参照を使うと思います。でも、intとかのプリミティブな型ならわざわざconst参照にしないで素直に値渡しすると思います。この、const参照と値の切り替えをテンプレートな…

OpenCVとBoost.Asioのインクルード順?

なにがあった 自分でも何言ってるかわからないけど、opencv/cv.hとboost/asio.hppのインクルード順でwindows.hがすでに定義されてます的なコンパイルエラーが出た。 どういうこと? winsock.hとwindows.hはインクルードする順番によってはエラーを吐いてしま…

Boostのposix timeでマシンをまたぐマイクロ秒精度のタイマー

何があった 速度測定するのにプラットフォームに依存しないミリ秒単位のタイマーが欲しくなって無理なのかなーって思ったら実はできるのかも? ってことでいろいろ試してメモ。 単一マシン上の場合 特定の関数にかかる時間を調べてたいって言う時はboost::ti…

boost.asioの非同期IOのしくみ

なにがあった 一個前のエントリで同期通信のブロッキングがウンタラカンタラって言って結局非同期通信することに落ち着いたので、非同期通信がどうなってるのかをメモ 基本的な流れとか おおよそ次の3ステップ メインスレッドでio_serviceに送受信バッファ…

boost.asioで同期受信のブロッキング解除

なにがあった TPCでもUDPでも同期受信関数を呼び出すともれなくブロッキングされるのだが、プログラム終了時に安全にブロッキングを解除する方法が無いっぽいことをメモ。 状況 まず、同期受信関数は子スレッドで動作しているものとする。 親スレッドは受信…

gitからソースを持ってきてboostのビルド

何があった Ubuntuとdebianでパッケージとして用意されているboostのバージョンが微妙に違うのでgitから持ってきてビルドしてしまおうと思ったので、ビルドしてインストールまでのメモ。 gitから入手 作業用ディレクトリに移動して次のコマンド git clone gi…

配列を配列のまま関数に渡したい

何があったか boost.asioでネットワークIO書いてたら次のような状況が出てきた 配列作る 配列を関数に渡す 関数内で配列全体のサイズとる(正確にはテンプレート関数の引数のマッチングの問題なんだけど意味的にはニアリイコールってことで) ただし、関数の…