Boost
カレントディレクトリの取得とか。 // 初めてこの関数を呼んだときのcurrent_pathの値 path initial_path(); // カレントディレクトリを取得 path current_path(); // カレントディレクトリを変更する void current_path(path const&); // テンポラリディレ…
unique_path関数は実は引数を取るようになっています。 path unique_path(const path& model="%%%%-%%%%-%%%%-%%%%"); path unique_path(const path& model, system::error_code& ec); デフォルト引数があるため引数を渡さなくても利用できますが、引数を渡…
Boost.Filesystemには「pathを受け取って何かする」という関数が用意されています。 問い合わせ namespace fs = boost::filesystem; fs::path const dir("C:\\hom"); fs::path const file("hom.txt"); fs::path const path = dir / file; // ファイル or デ…
Boost.Filesystemにはファイル名やディレクトリ名といったパスを表すためのpathクラスがあります。 パスに対する色々な操作を行うことができます。 初期化 文字列を渡して初期化します。 boost::filesystem::path path("C:\\hom\\hom.txt"); パスの出力 oper…
Boostのtoolsを眺めていたらInspect Toolなんてものがありました。ライブラリのソースがBoostの求めるガイドラインに従っているか調べてくれるツールのようです。これは構文のチェックなどもしてくれるのかな、と見てみたら、ライセンスの表記がちゃんとある…
Boostをビルドするためのツールであるbjam*1はBoostにソースだけ同梱されています。Boostをダウンロードして展開するとルートディレクトリにbootstrap.bat(bootstrap.sh)がありますので、これを実行するとビルドが実行され、ルートディレクトリの下にbjam.ex…
Boostのライブラリは他のBoostのライブラリを利用して実装されていることが多いです。AsioはThreadを利用していますし、MPLはその他の色々なライブラリの実装の助けになっています。そういった関係を抜き出してみました。ただの暇つぶしで特に意味はありませ…
どうやら boost::result_of は __stdcall などの修飾子が付いている関数に対応していないようです。 // これはOK (s_result_type は int) typedef int (* success_t)(); typedef boost::result_of<success_t()>::type s_result_type; s_result_type a = 0; // これはNG (e</success_t()>…
Boost 1.36.0 から追加された Boost.Accumulators。統計関数がいろいろあるのですが、標準偏差がないっぽいなぁということで、作ってみました。拡張方法はドキュメントに書いてあるようなのですが読んでもよくわからなかったのでソース読みつつ適当にやって…
でっちあげてみた。 id:wata_d:20060309:1141873430 と同じ事を C++ で。 #include #include template class Delegater { std::vector > func_; public: Delegater() {} template Delegater(const U& f) { func_.push_back(f); } template Delegater& operat…
こうか。 #include <iostream> #include <algorithm> #include <vector> #include <boost/shared_ptr.hpp> #include <boost/bind.hpp> using namespace std; struct base { virtual void print() = 0; }; struct hoge : public base { virtual void print() { cout << "hoge" << endl; } }; struct hige : public base { virtua…</boost/bind.hpp></boost/shared_ptr.hpp></vector></algorithm></iostream>
物凄い今更ですが、まともに使ったことってあんまりなかったりするので……。どうも生ポインタと比較した時のコストが気になってしまうんですが、まあたまには富豪的にいってみようということで使ってみました。 #include #include #include #include #include…
boost の Sandbox を眺めていたら tree フォルダが。 ntree というライブラリがありました。 n 分探索木というやつでしょうか。 http://cvs.sourceforge.net/viewcvs.py/boost-sandbox/boost-sandbox/boost/tree/ いずれ boost に入るという認識でいいのかな…
試しに読むだけ読んでみようと思ったら、link 要素が閉じられていないのでパースエラーが。 XHTML1.0 だとこれが valid なのか……。 HTML をパースできる便利なライブラリがあればまた試してみよう。
RSS で更新情報が取得できれば、最新版のリリースも見逃さずにすぐに更新できるのに、とふと思った。いまのところ、見る限りでは RSS はないようです。でもこの前のバージョンアップのときに公式サイトが XHTML1.0 でマークアップされるようになったようなの…
ビット演算をビットフィールドで代用する場合、面倒な構造体の定義をしなければなりませんが、それをプリプロセッサを使って一行で済ませてしまおうという試み。……いえ、ただ単に BOOST_PP 使ってみたかっただけです。 #define BITFLD(z, n, _) unsigned nBi…
letsboost::preprocessor(Let's Boost) を猿真似して BOOST_PP_REPEAT を使ったコードを書いたらエラーが出てしばしはまりました。 #define HAGE(n, _) int Hage ## n; BOOST_PP_REPEAT(5, HAGE, nil);こんなのを書いたら、 BOOST_PP_REPEAT の第一引数を 2 …
ちらっとソースを呼んでみたら、どうもユーザ定義のアサーションをかますこともできるらしい。BOOST_ENABLE_ASSERT_HANDLER 定数を定義(define)して、boost::assertion_failed関数を定義するだけでBOOST_ASSERTマクロの呼び出し先が変わるようにできているよ…