タグ

c++に関するfbisのブックマーク (41)

  • C++がPythonより重い… @ 7bit

    GUI grepツールの調査過程は一応一段落し、当初のもくろみ通り製作に入ろうとしています。 今は特に苦もなく使えそうなPython, C++, C#のどれを用いるか検討中。 大量のファイルへのアクセスと正規表現のマッチは割と重い処理になりそうなので、実際にコードを書いて比較しています。 まず生grep。find | xargs grep '...'。直接Cで書かれていることを考えると、最速の基準として考えて良さそうです。日英対訳文対応付けデータ [1]をデータセットとして実験していますが、1.1秒くらいで2000ファイル近くのスキャンが終わる。 次に、書きやすそうなところでPython (re)でやってみました。所詮LLだし、結果には全然期待していません。 ところがところが、何故かこれが滅茶苦茶速い。 特に最適化したコードの書き方でもないんですが、1.6秒くらいで終わる。殆どC同等の速さ

  • プリプロセッサで足し算しましょう! - デ-mk6

    プリプロセッサは所詮文字列置換、計算なんてできやしない…そう思っている方は多いでしょう。しかしそれは違います。計算できます。 日の目的はプリプロセッサで足し算です。ADD(3, 2)と書けば5と答えてくれる関数マクロを作ってみましょう。 おっと、#define ADD(m, n) ((m) + (n)) とかではありません。これで足し算をするのは誰か、それはコンパイル・実行したときの処理系です。 今日の目的はあくまでも、プリプロセッサという処理系に閉じた足し算を定義することです。言い換えればプリプロセスが終わった時点で結果がでていないといけません。あとなんか細かいことはある感じがしますが、もうめんどいので早速始めましょう。 まずプリプロセッサにおける数を取り決めておきます。数とは、数字のみで構成されたトークンのことです。数字とは、トークンとは何かなどはめんどいので常識的に考えてください。

    プリプロセッサで足し算しましょう! - デ-mk6
    fbis
    fbis 2009/06/24
    お腹いっぱい
  • デストラクタからオーバーライドされた仮想関数が呼べない - imHo

    デストラクタとは別の解放用の関数が仮想関数になってるとして、基底クラスのデストラクタから呼び出しておけば自動的に呼び出されるものかと思ってた。 #include <iostream> using namespace std; struct Base { virtual ~Base() { terminate(); /* <- ここで仮想関数呼び出し*/ cout << "~Base" << endl; } virtual void terminate() { cout << "Base::terminate()" << endl; } }; struct Derived : public Base { virtual ~Derived() { cout << "~Derived" << endl; } virtual void terminate() { cout << "Derived:

    デストラクタからオーバーライドされた仮想関数が呼べない - imHo
    fbis
    fbis 2009/06/12
  • C++で遊ぶことにした

    弾幕STGC++で実装する場合について、考えてみた。 弾幕STGには、たくさんの種類の弾が、多数存在するわけだ。 弾はすべて、1フレームごとに状態を更新されなければならないし、当たり判定や、画面外に出たかどうかなどの処理も行わなければならない。 弾ごとにこれらの処理は異なる。 そこで、次のように考えた。 まず、Bulletなるベースクラスを定義して、すべての弾に必要な、座標などのメンバと、必要なメンバ関数を純粋仮想関数で定義する。あとは、弾ごとにこのクラスを継承すればよい。 しかし、ここで問題がある。大量の弾である、クラスのオブジェクトをどうやって管理したらいいのだろう。動的多様性がほしいのだから、すべてBulletクラスのポインタでなければならない。しかし、弾は多数あるので、ひとつひとつnewしていくのはなんだか効率が悪いように思われる。そこで、こんなコードを考えた。 class Bu

    fbis
    fbis 2009/06/08
  • テンプレートメタプログラミング - Wikipedia

    出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。記事の信頼性向上にご協力をお願いいたします。(2022年9月) テンプレートメタプログラミング(英: template metaprogramming)は、メタプログラミング技法の一種であり、コンパイラがテンプレートを使って一時的ソースコードを生成し、それを他のソースコードと結合してコンパイルする方式である。テンプレートが出力するものは、コンパイル時の定数、データ構造、関数定義などがある。テンプレートの利用は言わばコンパイル時の実行である。この技法は様々な言語で使われている(C++、D言語、Eiffel、Haskell、ML、XLなど)。 テンプレートメタプログラミングの構成要素[編集] メタプログラミング手法としてのテンプレート利用には2段階の操作が必要である。まずテンプレートを定義し、次にそれをインス

    fbis
    fbis 2009/06/04
  • memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話

    Cのソースコードに m = 195; とか n = 0xffffffff; とか書いたときの定数(右辺)の型って、なんであるかご存じでしょうか? また、C90(1990年版のISO C言語規格)とC99(1999年版のそれ)ではその型が微妙に異なったりすることがあるんですが、ご存じでしょうか? さらには、お使いのマシンがILP32であるかLP64であるかLLP64であるかによっても、微妙に型が違ってきたりするんですが、それについてはどうでしょうか? えーもちろん、普段は「Uがついてなかったらint, Uがついてたらunsigned intジャネーノ?」くらいの理解でも殆ど不自由しないわけですが、詳細な理解がないとハマるケースも稀にあります。 私はというと、上に書いたような事は、C90/99の差違を除いてはだいたい理解しているつもりだったのですが、C90/99の差異について無頓着だったがため

    memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話
    fbis
    fbis 2009/06/04
  • C++ のお勉強 - IT戦記

    とりあえず daytime のクライアント ほとんどこれの写経 #include <iostream> #include <boost/asio.hpp> int main () { // io_service を介して OS の IO を使う boost::asio::io_service io_service; // ソケットを作る boost::asio::ip::tcp::socket socket(io_service); // 名前解決をする // (ホスト名とサービス名から、 IP とポートを求める) std::cout << "resolving hostname ..." << std::endl; boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::qu

    C++ のお勉強 - IT戦記
    fbis
    fbis 2008/09/22
  • lucille development blog » Blog Archive » 世界 7 大不思議のひとつ: 人はなぜ C++ をまだ使っているのか?

    (from steps to phantasien) もう C++ なんて好きでもないし使いもしない理由。 http://www.hyuki.com/yukiwiki/wiki.cgi?WhyINoLongerLikeOrUseCPlusPlus 世の中やはり同じ境遇に陥っているひとはいるのですね. 何が起きたのか? 嫌気が差したんだ。C++ のどの面をとっても、その設計は性能と引き換えに私の生産性をうばった。もう一つうんざりなのは, リンカのエラー診断だ。ただライブラリをダウンロードして使うなんてことが決してできない。新しいライブラリを使うのに、自分でソースからビルドしないといけない。C++ にはコンパイル済コードをさっと使うための ABI がないからだ。コンパイラがアップグレードするたびに、私はアプリケーションとライブラリ全体を再コンパイルして、その中でいつも不可解なエラーを診断して

    fbis
    fbis 2008/03/27
  • ロベールのC++入門講座を読んで C++ を初歩の初歩から再入門するよ - 前編 - ひげぽん OSとか作っちゃうかMona-

    前置き 自分の C++ レベルに絶望したので「ロベールのC++入門講座」を読んで再入門していく過程を日記に書いていきます。 「おまえはそんなことも知らずにコードを書いていたのか!」「それは間違い!」など叱咤激励募集中です:-) 読んでみたら、たくさんの驚きがありました。 スルーせずに読んでもらえると1つくらい役に立つことを提供できるかもしれません。 例えば5章のデフォルト引数に関数を使える例とか。 ルール 前置きはともかくはじめましょう。13:48にスタバで始めました。 読んで行くうえでいくつかルールを決めます。 知らなかったことは正直に知らなかったと書き、自分が読んで分かる説明を書く。 知識が曖昧だった所も同様に明確な説明を書く。 悩んだ内容を書く。 理解が怪しい所は必ずコードを書く。 さあ1章から読んでみよう。 1章 まずは使い方(13:50) 各 OS 毎に C++ の開発ツールを紹

    fbis
    fbis 2008/03/21
    ちょっとほしい
  • HOMMEZ公式オンラインショップ

    HOMMEZ(オムズ)は男性の心と身体の健康を支援し、一人でも多くの人が子供を得る幸せや男性としての喜びを享受できる社会の実現を目指しています。男性の妊活、活力にまつわる情報や商品の力で性や妊活に悩む男性が効率的に納得感を持って活動できる機会を創出します。

    fbis
    fbis 2008/03/12
    gcc g++ cygwin
  • http://www.kumikomi.net/article/explanation/2003/10kumi/13.html

    fbis
    fbis 2008/03/12
    volatile
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    fbis
    fbis 2008/03/12
    union
  • C++ 編(言語解説) トップページ ●Programing Place

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • C++編(標準ライブラリ)●Programing Place

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • はてなブログ | 無料ブログを作成しよう

    ネイルで使う材料で、DIY時の木割れやネジ跡を派手にしたらかわいい OSB合板でちょっとしたボックスをつくりました。 ビス止め下手すぎて木を割ったり穴あけすぎたりした場所に、好きな派手色の樹脂を詰めてパテ代わりにしてみました。 ちょっと某HAYっぽみ出て可愛かったので、自分用にメモです。 手順 塗装 派手色グミジェルで失敗部分…

    はてなブログ | 無料ブログを作成しよう
    fbis
    fbis 2008/01/13
  • Non Virtual Interface - piano曲線

    「Exceptional C++ Style」を買って読んだ。 C++ In Depth シリーズはたまに読むが買ったのは久しぶり。 「Effective C++」の3版も出ていてこちらも欲しいのだが、2版とダブる項目多いだろうし、立ち読みしてみると、丁寧語で書かれていてユーモアの部分がカットされていたのは残念。 Exceptional の方は、敬語でなくユーモアたっぷりにやってる。よかよか。 項目としては こういうふうにすれ という項目より これは使うな という項目が目立つ。 曰く export は「まだ」使うな auto は使うな register は使うな inline は使うな 例外指定はするな といった具合。 auto, register, inline はもともと全然使ってなかったし、日記に書くほど「ありがたい教え」というわけではない。 読んで真新しかったのがタイトルの Non

    Non Virtual Interface - piano曲線
    fbis
    fbis 2008/01/12
  • C++ の std::vector に v += 3, 1, 4 で push_back - てっく煮ブログ

    c++boost::assign使ってみた - Faith and Brave - C++で遊ぼう にて boost::assign の使い方が紹介されていた。 #include #include #include #include using namespace std; using namespace boost::assign; int main() { vectorint> v; v += 3, 1, 4; // !!! for(unsigned int i = 0; i return 0; } おおおおお、なんかすごい…!普通なら v.push_back(3); v.push_back(1); v.push_back(4); と書かなきゃならないところを v += 3, 1, 4; と書ける。自分の C++ の常識からするとびっくりするような書き方なのだけど、C++ では

    fbis
    fbis 2007/12/11
  • STLのページ

    角のページへ戻る STL(Standard Template Library) C++の標準テンプレートライブラリ、STLのページです。 2003/6/7 コンテナ全ページ標準に合わせて修正 目次(と予定) 更新履歴 はじめに STLとは? '99 11/07 作成 その前にC++で知っておかなければならないこと 馴染みがない(かもしれない)単語 '99 9/23 わずかに修正 テンプレート(template<>) 2001 1/31 更新 環境 '99 2/20 VCでSGI_STLを使う、BeOS、egcs等 使い方 イテレータ(反復子)の使い方 '99 6/19 更新 関数オブジェクトの使い方 '99 7/4 mem_fun()の使い方追加 早見表 STLで使う主なクラス '99 6/13 各クラスの説明、ヘッダをまとめた STLで使われる名前 '99 6/13 微妙に更

  • Programming Place Plus

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    fbis
    fbis 2006/08/07
  • mod_uploader Apache のモジュールとして動作する,C で記述された高速アップローダ

    mod_uploader とは? mod_uploader は,よくあるアップローダを Apache のモジュールとして実 装したものです.以下のような特長があります. Apache のモジュールとして C++ で記述されているので,PerlPHP で 作られた物に比べて高速. 独自の簡易スクリプト言語によるテンプレート機能があるので,再コンパイ ル無しで手軽に見た目を変更可能. アップロード時の進捗状況をリアルタイムに表示可能.