タグ

c++に関するnyamappのブックマーク (52)

  • 参照を保持するコンテナ - Faith and Brave - C++で遊ぼう

    同じ基クラスを継承したクラスのオブジェクトがいくつかあり、それらをまとめて扱いたい場合と、専門特化して扱いたい場合、両方が同時に必要なことがたまにあります。 そんなときに、オブジェクトの参照を保持するコンテナが必要になるのですが、どうやらboost::reference_wrapperのコンテナを使用すればいいようです。 こんな感じになりました。 #include <iostream> #include <string> #include <vector> #include <boost/ref.hpp> #include <boost/assign/list_of.hpp> #include <boost/foreach.hpp> struct Base { // 共通で使用する関数 void print() const { std::cout << "print" << std::e

    参照を保持するコンテナ - Faith and Brave - C++で遊ぼう
  • 逆引きリファレンス - boostjp

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • Introducing cppsh: A bash-Like Shell with C++ Syntax - Mezeskedonia

    It’s been a long time in the making, but I am proud to announce the first beta release of cppsh, the bash-like shell specifically designed for those engineers who find themselves most comfortable at the reins of a C++ compiler. The best features from both bash and the C++ language come together in cppsh to make you a more productive shell user. Some of the most important features of cppsh include:

  • C++でページランクを実装 - yasuhisa's blog

    実験で使いそうなベースラインがページランク的なアルゴリズムだったので、Rubyの実装を適当にC++に翻訳してみただけ。超簡単なのでよい。 Rubyでもっとも重要なライブラリは何か?PageRankで計算してみた - aikeの日記 #include <map> #include <cmath> #include <iostream> #include <vector> typedef std::map<int, std::vector<int> > AdjacentMatrix; class PageRank { public: PageRank(AdjacentMatrix graph, int n, double damping = 0.85) { graph_ = graph; N_ = n; damping_ = damping; for (AdjacentMatrix::iter

    C++でページランクを実装 - yasuhisa's blog
  • C/C++/Objective-CをJavaScript、C#、ActionScript 3に変換するツールキット「Mandreel」が凄そう - 強火で進め

    theFlashBlog » Video Interview With Mandreel About Molehill http://blog.theflashblog.com/?p=2593 約1週間でWiiのゲーム(NyxQuest)をMolehill(次期Flashのコードネーム)に変換したそうです。 MANDREEL from Lee Brimelow on Vimeo.Mandreelも凄いですがMolehillの性能も凄いですね。こんなゲームがFlashで動いちゃうんですね。 ツールキットの中の1つ、C++からFlashやAIRに変換するフレームワークの紹介ページ。 Framework for AS3 http://www.mandreel.com/?page_id=530 関連サイト Mandreel http://www.mandreel.com/ For Develope

    C/C++/Objective-CをJavaScript、C#、ActionScript 3に変換するツールキット「Mandreel」が凄そう - 強火で進め
  • Bjarne Stroustrup Interview about C++  C++ はプログラマの給料を上げるためわざと難しく作った

    English only -----Original Message----- Subject: FW: Bjarne Stroustrup Interview about C++ (Joke I hope) Importance: Low On the 1st of January, 1998, Bjarne Stroustrup gave an interview to the IEEE's 'Computer' magazine. Naturally, the editors thought he would be giving a retrospective view of seven years of object-oriented design, using the language he created. By the end of the interview, the in

    nyamapp
    nyamapp 2011/01/16
  • mplexでソースコードレベルメタプログラミング - Blog by Sadayuki Furuhashi

    Webアプリケーションを作るとき、HTMLを生成するテンプレートエンジンをよく使いますが、これはパラメータに応じて様々なコードを生成する自動生成ツールであると言えます。 mplexは、プログラムを生成するためのテンプレートエンジンです。 実は MessagePack-RPC for C++ の実装に使っています。似たような関数をたくさんオーバーロードするために活用しています。(そろそろ可変長templateを使いたいですねぇ) 昔はeRubyを使っていたのですが、HTML用のテンプレートエンジンはソースコードがあまりに読みにくくなるので自作しました。 mplexを使うと、普通のプログラムの中にRubyのコードを埋め込むことができます: // クラスを4つ生成 %4.times do |i| class Test[%i%] { public: %if i % 2 == 0 int even;

    mplexでソースコードレベルメタプログラミング - Blog by Sadayuki Furuhashi
  • wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development

    こんにちは岡野原です。もう年末になりましたが、私の今年はこれからです。 wat-arrayというC++ライブラリを公開しました。 google code:wat-array wat-arrayはフリーソフトウェアであり、修正BSDライセンスに基づいて利用できます. wat-arrayはwavelet木と呼ばれるデータ構造を利用することにより、配列上の様々な処理を効率的に行うことができるC++ライブラリです。 例えば、 – 任意の連続した範囲内にある最大値 /最小値 / k番目に大きい値, またそれらの出現位置、頻度 – 任意の連続した範囲内にある指定した文字cの出現回数、c未満/より大きい文字の出現回数 – 任意の文字のi番目の出現位置 といったものを求めることが全て範囲長、入力長に対して定数時間で行うことができます。 例えば長さ10億、値の範囲が0から1000万であるような配列A中のA[

    wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development
  • Boost.Fusion 出力フォーマット - Faith and Brave - C++で遊ぼう

    Boost.Fusionでは、tuple_open, tuple_close, tuple_delimiterというのを使用することによって、出力時のフォーマットを変更することができます。 #include <iostream> #include <boost/fusion/include/make_vector.hpp> #include <boost/fusion/include/io.hpp> namespace fusion = boost::fusion; int main() { std::cout << fusion::tuple_open('['); std::cout << fusion::tuple_close(']'); std::cout << fusion::tuple_delimiter(", "); std::cout << fusion::make_vect

    Boost.Fusion 出力フォーマット - Faith and Brave - C++で遊ぼう
  • クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development

    こんにちは、人恋しい季節になってきましたね。 研究開発チームの祢次金(@nejigane)と申します。 エントリではCinderというクリエイティブなコーディング向けのライブラリについてご紹介したいと思います。 Cinderとは Cinderとは、画像、音声、動画等を簡単に処理&可視化できる、主にビジュアルデザイン向けの強力なC++ライブラリであり、The Barbarian GroupのAndrew Bell氏が中心となってオープンソースとして開発が進められています。 同様の思想を持つProcessingやopenFrameworksによく似ており、C++で簡単に記述できるうえ、WindowsMacOSX、iOS(iPhone/iPad)といった複数のプラットフォームをカバーしています。 細かい機能/特徴の紹介は家サイトに譲るとして、Cinderを極めるとどのぐらいクリエイティブな

    クリエイティブなC++ライブラリ "Cinder" の紹介 - Preferred Networks Research & Development
  • タプルを展開するfor_each - Faith and Brave - C++で遊ぼう

    最近タプルをよく使うのですが、タプルのリストを走査する際、 タプルの要素に名前を付けるために変数を作るのがめんどくさいです。 たとえばこんな感じ: std::vector<fusion::vector<int, char> > v; boost::for_each(v, [](fusion::vector<int, char> t) { const int x = fusion::at_c<0>(t); const char c = fusion::at_c<1>(t); // use... }); for_eachによって関数が呼び出される際にタプルを展開してくれれば、 パラメータとして各型のデータが渡されると共に名前も同時に付けることができるので便利です。 std::vector<fusion::vector<int, char> > v; fused_for_each(v, [](i

    タプルを展開するfor_each - Faith and Brave - C++で遊ぼう
  • d.y.d. 2倍だけじゃない

    10:01 10/07/20 それでも2倍だ 先日のvectorの伸長度合いの記事に関して 当に1.5倍のほうがメモリ効率がよいのか という反応をいただきました。とても興味深い。みんな読みましょう。 自分の理解メモ: 「再利用ができるから嬉しい」等の議論をするなら、 今までに確保したメモリ (1 + r^1 + ... + r^k) のうち、 有効に使えてるメモリ r^{k-1} (バッファ拡大直後) や r^k (次のバッファ拡大直前) の割合で評価してみようじゃないかという。 まず簡単のために再利用をしない場合を考えると、この割合はそれぞれ (r-1)/r^2、 (r-1)/r になります(途中計算略)。 この利用率が最悪になる瞬間 (r-1)/r^2 を最善にしよう、 という一つの指標で考えてみると、式を微分なりなんなりしてみると r = 2 で最大(25%)となることがわかります

  • Visual C++ 2010に追加されたSTLアルゴリズム

    この記事が公開される頃にはVisual Studio 2010のパッケージ販売が始まっているでしょうか。MSDN Subscriptionでは先行提供されていますし、各言語のExpress版が公開されていますから、初物(?)の好きなミナサマは早速遊んでいらっしゃることと思います。 C++屋の僕にとって一番嬉しかったのはVisual C++ 2010(vc10)でC++0xに(完全ではないにせよ)準拠してくれたこと。特にlambda式にはドキドキさせられました。lambda式のサポートにより、より明快でコンパクトな表現が可能になりました。正規表現(regex)や配列(array)、賢いポインタ(shared_ptr/weak_ptr)などなど、サポートが待ち望まれていたクラス群が追加されています。稿ではvc10で新たに追加されたSTLアルゴリズムを一気に紹介します。 以降、プロトタイプと説

    Visual C++ 2010に追加されたSTLアルゴリズム
  • boost.iostreamsがおもしろい - in the box

    iostreamをかなり簡単に作れるようになるライブラリ。コンセプトとかその辺は私もあんまり理解してないので詳しくはこちらをどうぞ。 no title とりあえずフィルタやデバイスを繋げてみる。 #include <boost/iostreams/filtering_stream.hpp> #include <boost/iostreams/tee.hpp> #include <boost/iostreams/device/file.hpp> #include <boost/iostreams/filter/gzip.hpp> #include <iostream> namespace io = boost::iostreams; // 標準出力に書き出すSink // 用意されてそうな気がするんだけどないっぽい。 template <typename Ch> class basic_st

  • Boost.Graphに入門 - Faith and Brave - C++で遊ぼう

    k.inabaさんおすすめの『最短経路の』でグラフ理論の勉強中。 簡単なグラフを用意して、 Boost.Graphで最短経路の計算。 #include <iostream> #include <vector> #include <string> #include <boost/graph/graph_traits.hpp> #include <boost/graph/adjacency_list.hpp> #include <boost/graph/dijkstra_shortest_paths.hpp> #include <boost/graph/graph_utility.hpp> #include <boost/spirit/home/phoenix/algorithm.hpp> using namespace boost; typedef adjacency_list<listS

    Boost.Graphに入門 - Faith and Brave - C++で遊ぼう
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

  • SimString - A fast and simple algorithm for approximate string matching/retrieval

    A fast and simple algorithm for approximate string matching/retrieval SimString is a simple library for fast approximate string retrieval. Approximate string retrieval finds strings in a database whose similarity with a query string is no smaller than a threshold. Finding not only identical but similar strings, approximate string retrieval has various applications including spelling correction, fl

  • Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録

    類似画像検索システムを作ろう(2009/10/3) 3日で作る高速特定物体認識システム(2009/10/18) に続くOpenCVプロジェクト第三弾です。今回は、上の二つをふまえてカラーヒストグラムではなく、局所特徴量(SIFTやSURF)を用いた類似画像検索を試してみます。局所特徴量はグレースケール画像から抽出するため、カラーヒストグラムと違って色は見ていません。画像の模様(テクスチャ)で類似性を判定します。 実験環境は、Windows 7、MinGW C++コンパイラ、OpenCV2.0、Python 2.5です。EclipseでMinGWを使う方法はEclipseでOpenCV(2009/10/16)を参照してください。Visual C++にはないディレクトリスキャン関数を一部使っているのでVisual C++を使う場合は、少しだけ修正が必要です。 Bag-of-Visual Wor

    Visual Wordsを用いた類似画像検索 - 人工知能に関する断創録
  • C++ で気軽に時間測定がしたい - iwiwiの日記

    プログラムの一部分の所要時間をちょっと調べたいと思っても,前で時間を調べて,後ろで時間を調べて,引き算したものを出力して,と色々書かねばならず,意外と面倒です. Ruby の benchmark はいいなあと思っていたら,id:tanakh さんの PFI セミナーを思い出したので,それっぽいものを C++ で実現してみました. (2/21 19:30 頃に「もう少し便利に」のバージョンの問題点と解決について追記しました) 例 int main() { benchmark { sleep(1); } benchmark { sleep(2); } } こんな感じで書くと 1.000013 sec 2.000009 sec こんな感じで標準エラー出力に表示. ソースコード これを上に書いておけば OK です. #include <sys/time.h> struct __bench__ {

    C++ で気軽に時間測定がしたい - iwiwiの日記
  • BoostCon 2010 : 5/12 - Faith and Brave - C++で遊ぼう

    Maurice Herlihy : Keynote Gennadiy Rozental: Production use of Boost.Test Boost.Testの使用法について: 1.関数実行を保護するexecution_monitorの使用法。 様々な配置オプション。 (New)浮動小数点例外の取り扱い。 (New)コールバックでの罠 2.高水準なプログラム実行保護のためのprogram_execution_monitorの使用法。 3.(New)生産コンポーネントにおけるBoostテストツールの使用法。 4.単体テストにおいて:実装自体の内部を構築コンポーネントユニットテストする2つのアプローチ: a) コンパイル時のスイッチを使用する b) コンソールテスト実行と、共有ライブラリとして組み込まれた実装を使用する Michael Caisse: An Asio Based Fl

    BoostCon 2010 : 5/12 - Faith and Brave - C++で遊ぼう