Boostに関するdotsargのブックマーク (17)

  • Boost.Container stable_vector - fjnlの生存記録のような何か

    はじめに 記事は partake.in 7日目です。 stable_vector Boost 1.48からBoost.ContainerというSTL互換のコンテナライブラリが採用されました。基的にはboost::container::vectorやboost::container::stringといったSTL互換のクラスが提供されていますが、boost::container::stable_vectorのようにSTLにはない独自のコンテナも提供されています。 (以下、stable_vectorと書いた場合はboost::container::stable_vectorを、vectorと書いた時はstd::vectorを示すものとします) stable_vectorは名の示す通り(要素が)安定したvectorです。例えばvectorを用いて以下の操作を行うことを考えます。 vector<

    Boost.Container stable_vector - fjnlの生存記録のような何か
  • 演算子を自動定義する - boostjp

    C++は演算子のオーバーロードによって、ユーザー定義型に演算子を持たせることができる。各演算子には関連性があり、ひとつ定義すれば他の演算子も同じように書ける。たとえば、operator<()さえ定義すれば、operator>()、operator<=(), operator>=()はoperator<()から定義できる。Boost Operators Libraryは、このような関連演算子を自動的に定義する機構を提供する。 インデックス 基的な使い方 - 整数型を定義する 算術演算子 大小比較の演算子を自動定義する 等値比較の演算子を自動定義する 加算演算子を自動定義する 減算演算子を自動定義する 乗算演算子を自動定義する 除算演算子を自動定義する 剰余演算子を自動定義する OR演算子を自動定義する AND演算子を自動定義する XOR演算子を自動定義する インクリメント演算子を自動定義す

  • boostjp

    サイトは、Boost C++ Libraries日語コミュニティのWebサイトです。 Boost C++ Librariesに関する最新情報、日語ドキュメント、Boost.勉強会の情報などを提供していきます。 このWebサイトは、以下のGitHubリポジトリにて作成を行っています。 boostjp/site : WebサイトのMarkdownソース boostjp/image : Webサイトで使用する画像リソース HTMLデータのダウンロード boostjp.github.io-master.zip ローカルで閲覧できるHTMLを用意しています。 関連サイト C++リファレンスサイト cpprefjp 運営者 boostjpは、以下のコアメンバが運営を行っています: Akira Takahashi Usagi Ito melpon Kohsuke Yuasa Akiko Yaman

  • Adobe Generic Image Library(GIL)を使ってみる

    2007年4月6日 Suns & Moon Laboratory 概要インストールzliblibpnglibjpgboostAdobe GILサンプルの動作確認!こんなエラーが出る!!またもエラーサンプル一覧resizeaffineconvolutionmandelbrotinterleaved_ptrx_gradienthistogrampacked_pixeldynamic_image 概要 ちょっと画像処理をしたくなったので、物色した所面白そうなの発見。 Adobe Generic Image Library (GIL) プレゼンテーションを見ると、なんか使ってみたくなります。 とは言うもののテンプレートを使った事ないんですが...ま、勉強しましょう。 インストール 結構面倒でした。setup.exe一個でインストールしたいものです<軟弱 zlib 幸いバイナリがあったので、それを使

  • Pasture | assignment - operator+=, operator(), repeat

    Assignment ライブラリの続き。 list_of, map_list_of の他にいつくか関数がある。 ひとつは operator+=()。 以下のようにすれば連続する要素をコンテナに代入でなく追加する。 using namespace boost::assign; // operator+=()を有効にする std::vector<int> v; v += 4,5,6; // 末尾に 4,5,6の3要素を追加 上のサンプルにもあるが、operator+=() は boost::assign名前空間で 定義されているので、使用するには using が必要。 また、コンマ演算子もオーバーロードされていて、普通のコンマ演算子とは引数の評価順が変わってしまうので、混乱を招くかもしれない。 個人的にはあまり好きじゃない記法だ。 operator+=() と同様の機能を operator()

  • Pasture | range

    Rangeライブラリ。 その名の通り、要素のシーケンスの範囲を扱うライブラリで、 なんとなく地味な感じがあるけど、コレ面白い。 範囲とは、コンテナから以下の制約を取り除いたものとみなすこともできる。 要素を自身が管理する コピー可能である。 つまり範囲をコンテナのサブセットとみなすことで、できるかぎりコンテナとアルゴリズムを共用しようという、個人的には目から鱗のアイディア。よく考えつくなあ。 現在の実装で範囲として扱えるものは STLコンテナ(とその仲間たち) 配列 NULL終端文字列 (char[], wchar_t[], char*, wchar_t*) std::pair<Iterator, Iterator> 例えば以下の template関数 PrintRangeを一回かけば、vectorだろうが、配列だろうが、C文字列だろうが、範囲ならばなんでも引数に指定できてしまう。 tem

  • デマングル(demangle, デマングリング, demangling)する関数 - とくにあぶなくないRiSKのブログ

    デマングルする関数書いてみた。車輪の再発明?おいしいよ (^^) あ,今は GCC 限定だよ。 概要 demangle はデマングルした文字列を返す。 マングル(mangle, マングリング, mangling)された文字列,型, type_infoのいずれかを受け取り変換することができる。 あなたが暗黒面に落ちてよいのであれば,なんとtypeidを省略できる。悪しきマクロを唱えることにより, decltype のように demangle を使える。この demangle は不思議なことに型バージョンの demangle とちゃんと区別される。 サンプル・使い方 #include<iostream> #include<sscrisk/demangle.hpp> int main() { using sscrisk::demangle; std::cout << demangle<int>(

    デマングル(demangle, デマングリング, demangling)する関数 - とくにあぶなくないRiSKのブログ
  • C++ tips: Boost で demangling - C++ ときどき ごはん、わりとてぃーぶれいく☆

    RTTIで型情報を対話的に可視化したいと思うと、C++ではデマングルしないと割と読めません。extern "C"しておくとか邪悪臭いですし。 ところがデマングリングは処理系依存に触れる事になるので、ユーザーコードで扱いたいものではありません。そこで処理系依存のデマングルをラップしたライブラリーレベルでユーザーコードからは使いたいと思うのが一般的なプログラマーの思考かと思います。 Boost.Units にあるよ・w・ http://www.boost.org/boost/units/detail/utility.hpp 例えば、 #include <boost/units/detail/utility.hpp> using boost::units::detail::demangle; auto demangled_name = demangle(typeid(0).name()); こん

    C++ tips: Boost で demangling - C++ ときどき ごはん、わりとてぃーぶれいく☆
  • make_overloaded_function 使ってみた。 - C++でゲームプログラミング

    前回の記事で『関数の型を書くのがめんどくさい』と書いたら id:RiSK さんから『make_overloaded_function があるよ』とコメントで教えて頂いたので試してみました。 [ソース] #include <boost/functional/overloaded_function.hpp> #include <boost/lexical_cast.hpp> #include <string> #include <iostream> std::string to_string(int n){ return boost::lexical_cast<std::string>(n); } int to_int(std::string str){ return boost::lexical_cast<int>(str); } int main(){ auto multi = boost

    make_overloaded_function 使ってみた。 - C++でゲームプログラミング
  • boost::fusion::vectorで異なる型のコンテナ - C++と色々

    動的な多態性を持った型のオブジェクトをコンテナで扱いたい場合、基クラスの参照型または基クラスのポインタ型のコンテナを使うことができます: #include <iostream> #include <memory> #include <vector> struct A { void disp() const { do_disp(); } private: virtual void do_disp() const = 0; }; class B : public A { void do_disp() const override { std::cout << "B\n"; } }; int main() { std::vector<std::shared_ptr<A>> v; v.emplace_back(std::make_shared<B>()); for (auto const& a

    boost::fusion::vectorで異なる型のコンテナ - C++と色々
  • C++ で中身が同じ構造体を相互変換する - C++でゲームプログラミング

    みたいな話が Lingr の C++ 部屋で出てた。 そういうことを実現したい場合は Boost.Fusion を使うのが現実的かな? (reinterpret_cast で無理やり変換してしまうという手が無いわけではないのだけれどさすがにアレ過ぎるので。 [ソース] // 構造が全く同じな型 struct point{ int x; int y; }; struct vec{ int x; int y; }; #include <iostream> #include <boost/fusion/adapted/struct/adapt_struct.hpp> #include <boost/fusion/algorithm/auxiliary/copy.hpp> #include <boost/fusion/include/as_vector.hpp> #include <boost/f

    C++ で中身が同じ構造体を相互変換する - C++でゲームプログラミング
  • P-Stade C++ Libraries

    Ketchup The Replacement for BEGIN_MSG_MAP of ATL/WTL using Class Templates

  • boost::assignでコンテナに要素を追加するコードを簡潔に記述する

    boost::assignを使うと、コンテナに要素を追加するコードを簡潔に記述することができます。 必要なヘッダ #include <boost/assign.hpp> 一般的にstd::vectorに要素を追加するには、push_backを繰り返し使います。 std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); boost::assignを使うと、次にように簡潔に書くことができます。 using namespace boost::assign; std::vector<int> v; v += 1,2,3,4,5; 同様に、std::mapへの要素の追加は次のように書くことができます。 using namespace boost::assign

    boost::assignでコンテナに要素を追加するコードを簡潔に記述する
  • 【C++ / Boost】boost::bindについての適当まとめ - 中の下の上の真ん中あたり

    何語だこれ…状態になったのでメモしておきます。 まずはboost::functionから。 #include <iostream> #include <boost/function.hpp> typedef boost::function<int(int, int)> TestFunction; int sum(int a, int b) { return a + b; } int main() { TestFunction Tf; int Result = 0; Tf = &sum; Result = Tf(2, 5); std::cout << "結果は" << Result << "でした。" << std::endl; return 0; } こんな感じです。Resultは7になります。このboost:functionを使用することで、簡単に関数ポインタに近い働きをさせることができ

    【C++ / Boost】boost::bindについての適当まとめ - 中の下の上の真ん中あたり
  • それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳

    Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではなく、むしろ その逆、 Boost.Optional が便利な分、逆に不満点が目立つので書いていたわけですが、 よく考えたら、 Boost.Optional の便利さを、纏まった記事で書いていないなー、 と、そう思い至ったので、この辺で Boost.Optional を徹底的に推奨する記事でも書いてみようかな、 というわけで、さんざん既出なネタばかりですが、折角なので書いてみることにしましたよ。 冒頭に挙げた以外で参考になるような記事は、この辺でしょうか: C++

    それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳
  • boost::serializationの使い方

    boost::serializationを使う はじめに コンパイル 簡単な使い方 クラスのバージョン付け 読み込みと書き込みで別の動作を行う 「非侵入型」のシリアル化関数 基底クラスをシリアル化する 配列をシリアライズする constメンバはどうするか ポインタからのシリアライズ:その1 ポインタからのシリアライズ:その2 基底クラスへのポインタから復元する 実装レベル オブジェクトの追跡 抽象クラスでのエラー NVP ロケールの設定 はじめに boost C++ Libraries(以下単にboost)という非常に便利なライブラリがあります。 次期C++標準にこのライブラリのうちのいくつかが採用されるらしいという話もあり、 C++開発者にとっては無視して通れないライブラリです。 そんなboostの中に、serializationというライブラリがあります。 一言で言ってしまえば、「クラ

  • Let's Boost

    Boost C++ Libraries の紹介サイトです。 :: by Google はじめに ご挨拶 Boost のインストール方法 参考リンク集 ニュース ◆ Version 1.42.0 と 1.41.0 対応 (2010/03/14) 新規ライブラリに関する Let's Boost のページ…: property_tree (汎用木構造型コンフィグ管理) / uuid (ユニークID生成器) ◆ RSS つけました (2009/08/28) ◆ Version 1.40.0 と 1.39.0 対応 (2009/08/28) 新規ライブラリに関する Let's Boost のページ…: Signals2 (Signal/Slotライブラリ改良版) ◆ Version 1.38.0 と 1.37.0 対応 (2009/02/22) 新規ライブラリに関する Let's Boost のペー

  • 1