タグ

C++に関するf99aqのブックマーク (95)

  • enbug diary(2008-02-02)

    _ 日常 当は朝のうちに行くつもりだったのに、 結局夕方になってから、 No Country for Old Men を観に行った。 原作の評判は聞いていたのだが、映画も割と評判良さそうだったので、 見に行く気になった。 少々オーソドックスなストーリーと言えなくもないが、 映画の世界にどっぷり浸かれて、かなり良かったー。 ハリウッドじゃ、最近はゲームやコミックの映画化が多くて、 どうしても勧善懲悪な内容になりがちで、 少々傷気味だっただけに、 こういう善対悪にならない構図は非常によろしい。 一応善に限りなく近い存在であるシェリフは常に事件から一歩退いた位置にいるし、 観客の多くが一見善と捉えがちな主役は所詮こそ泥だ。 どっちの方がより恐ろしい存在か程度の違いしかないと言っていい。 たぶん、この映画で最も重要なテーマは自分の運命の決め方なんだと思う。 われわれは常に何かを選択しながら生き

    f99aq
    f99aq 2008/02/17
    なるほど
  • 2008-02-02 - Cry’s Diary : [C++0x][C++]可変長テンプレートの使い道が「型安全な printf」と「tuple」と「転送関数 (関数オブジェクト)」ぐらいだと思っている人へ送る,ちょっと早めの素敵な variadic

    N2461 より "12.6.2 Initializing bases and members" の 10 の例示コード. template<class... Mixins> class X : public Mixins... { public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; 同じく N2461 より "14.5.3 Variadic templates" の 5 における例示コード. template<typename...> struct Tuple {}; template<typename T1, typename T2> struct Pair {}; template<class ... Args1> struct zip { template<class ... Args2> struct wit

    2008-02-02 - Cry’s Diary : [C++0x][C++]可変長テンプレートの使い道が「型安全な printf」と「tuple」と「転送関数 (関数オブジェクト)」ぐらいだと思っている人へ送る,ちょっと早めの素敵な variadic
  • GotW #88: A Candidate For the "Most Impotant const" - Faith and Brave - C++で遊ぼう

    Herb Sutter氏のブログにて、Guru of the Weekの新作が公開されています ネタ元 cppll:13250 - GotW #88: A Candidate For the "Most Important const" GotW #88: A Candidate For the "Most Important const" Guru of the Week 以下、簡単な和訳 (間違ってたら誰か指摘してください。。。) GotW #88: "最も重要なconst"の候補 JG Questions Q1 : このC++コードは正しいでしょうか? // Example 1 string f() { return "abc"; } void g() { const string& s = f(); cout << s << endl; // この一時オブジェクトはまだ使える? }

    GotW #88: A Candidate For the "Most Impotant const" - Faith and Brave - C++で遊ぼう
    f99aq
    f99aq 2008/01/07
  • C++0x - Lambda Expressions and Closures(N2487) - Faith and Brave - C++で遊ぼう

    前回からの差分紹介 【ローカル変数の宣言構文】 N2413(前回) int ar[] = {3, 1, 4}; int sum = 0; int factor = 2; for_each(ar, ar + 3, <>(int value; &sum, factor) (sum += factor * value)); N2487(今回) ... : [ローカル変数名] (...) int ar[] = {3, 1, 4}; int sum = 0; int factor = 2; for_each(ar, ar + 3, <>(int value) : [&sum, factor] (sum += factor * value)); Boost.Lambdaの場合 int ar[] = {3, 1, 4}; int sum = 0; int factor = 2; for_each(ar,

    C++0x - Lambda Expressions and Closures(N2487) - Faith and Brave - C++で遊ぼう
  • 変数名取得マクロ - Faith and Brave - C++で遊ぼう

    #define TO_STRING(VariableName) # VariableName #include <iostream> #include <string> using namespace std; int main() { int value = 3; // 変数名取得 string str = TO_STRING(value); // 変数名表示 cout << str << endl; // value return 0; } シリアライズとかで使えそうな気がする

    変数名取得マクロ - Faith and Brave - C++で遊ぼう
    f99aq
    f99aq 2007/11/18
    目から鱗
  • C++ Technical Report 1 - Wikipedia

    C++ Technical Report 1 (TR1、Technical Report on C++ Library Extensions)は、ISO/IEC TR 19768:2007[1] の非公式名称で、標準C++ライブラリの拡張についての標準規格である。これには正規表現、スマートポインタ、ハッシュ表、擬似乱数生成器などが含まれている。TR1の目標は「拡張された標準C++ライブラリの使用方法について慣習を確立してほしい」とのことである[2]。 TR1は既に一部ないし全部を実装しているものもある。ちなみに、TR1のほとんどはBoostに含まれており、それが利用可能である。 TR1はC++のライブラリの拡張の全てではない。たとえばC++11ではスレッドに関するライブラリが含まれ、言語機能自体の拡張(move semanticsやvariadic templatesの追加など)などSTL

  • mutableな参照を返さないために - かそくそうち

    えーと、今日は作業はほとんど進まず、設計を少し弄っただけです。 前から気になっていた問題なんですが、コンテナをメンバに持つクラスで、そのコンテナを外部から自由に弄らせたい場合、よく void bar_check(int x); // 何かのチェック関数 class hoge { public: std::list<foo>& foo_list() { return foo_list_; } void bar(int x) { bar_check(x); // 必ずこのチェックを通す必要があるので、カプセル化が必要 bar_ = x; } private: std::list<foo> foo_list_; int bar_; }; みたいに書いていました。 メンバ変数をpublicにしたくないけど全機能を使うためには参照を返すしかなく、実質的にメンバ変数を公開してしまっているのに変に拘って

    mutableな参照を返さないために - かそくそうち
    f99aq
    f99aq 2007/10/27
    うあ〜、なるほど。
  • はてなブログ | 無料ブログを作成しよう

    ナミビアの砂漠 冒頭カナ(河合優実)が「どうしたの、元気ないね、べてないじゃん」と女友達のドリンクを一口すくって差し出すのは自分もやりそうだと思う、何となく。「ぼく?」「すぐに?」とハヤシ(金子大地)の言葉をそのまま繰り返すのも自分がやりそうだと思う、分かってい…

    はてなブログ | 無料ブログを作成しよう
    f99aq
    f99aq 2007/10/17
    binary expression
  • C/C++で2進数値を記述 - きまぎらすほしゅの不定記 -

    新米と秋刀魚のわた焼き お刺身用の秋刀魚を買いました。1尾250円です 3枚におろして、秋刀魚のわたに酒、味醂、醤油で調味して1時間ほど漬け込み、グリルで焼きました 秋刀魚のわた焼き わたの、苦味が程よくマイルドに調味され、クセになる味わいです 艶やかな新米と一緒に 自家製お漬物 土…

    C/C++で2進数値を記述 - きまぎらすほしゅの不定記 -
    f99aq
    f99aq 2007/10/14
  • 2進数 17:16 07/10/11 d.y.d.

    23:24 07/10/23 はすける 昨日の id:MaDさんの発表、 直線距離にして10mくらいのとこでやってたはずなのに行けなかったよ残念。まったく、 「ドラスはアイアンヘッド出にくすぎだろ」とか「さすが締切前はゴルフがはかどるなあ」とか 言っている場合ではなかった。いやそんなこと決して言ってませんが。 パラメトリシティ Parametricity(住井さんの記事に詳しいです)を最初に知ったときに面白いなーと思った記憶について徒然なるままに。 # let rec my_reverse lst = ... ;; - : 'a list -> 'a list = <fun> 「なんかリストのreverseする関数を自前で実装したんだけど正しく実装できたか自信がない。とりあえず型は合った」 というときに、1個具体例を喰わせてみて # my_reverse [0; 1; 2; 3; 4];;

    f99aq
    f99aq 2007/10/14
  • C++0x - constexpr - Faith and Brave - C++で遊ぼう

    コンパイル時に実行される関数を定義できる これによって、関数の戻値をコンパイル時定数にできる いままで再帰テンプレートやクラステンプレートの特殊化で処理していたものが 関数テンプレートの特殊化でできるようになるようだ いままで template <class T> struct is_pointer { static const bool value = false; }; template <class T> struct is_pointer<T*> { static const bool value = true; }; static_assert(is_pointer<int*>::value, "not pointer"); これから template <class T> constexpr bool is_pointer(T*) { return true; } templat

    C++0x - constexpr - Faith and Brave - C++で遊ぼう
  • ムーブセマンティクスと右辺値参照 - イグトランスの頭の中

    話のネタはありながら、気が付けば木曜日となり、どうやら毎週木曜日に書くという習慣が自分の中に根付いたようです。 さて今日はC++の話です。ActiveBasicもバージョン5で色々と変わりそうですが、C++も目下新規格の制定に向けて話が進んでいます。その新規格は現在のところ、C++0xと呼ばれています。勿論200x年中の制定を見込まれているからですが、最近ではC++09という言葉もちらほら見かけ始めている気もします。 なお、そんなC++0xの様子はC++の標準化委員会のページで窺い知ることができます。 http://www.open-std.org/jtc1/sc22/wg21/ JTC1/SC22/WG21 – The C++ Standards Committee その中でも今回紹介したいのはムーブセマンティクス (move semantics)と右辺値参照 (rvalue refer

    ムーブセマンティクスと右辺値参照 - イグトランスの頭の中
    f99aq
    f99aq 2007/09/11
    move semantics ってこういうことだったのか
  • dup2(2) - odz buffer

    ref:http://d.hatena.ne.jp/naoya/20070731/1185893412 キモになるのは 複数のサービスをまとめて面倒を見るにあたって、それぞれのサービス用のリスニングソケットを select(2) で多重化する 接続があると fork して子を作り、その子を exec して体のプログラム(daytime.pl や echo.pl に相当するもの) を実行する exec する前にソケットディスクリプタを 0, 1, 2 に dup2(2) する というところです。特に最後のところですね。exec でプログラムを切り替えてもファイルディスクリプタはそのまま継承するので、あらかじめ dup でソケットと標準入出力をつなげておいて exec することで、exec したあとのプログラムの標準入出力が接続ソケットとのやりとり相当になるという。なるほどー。 inetd

    dup2(2) - odz buffer
  • steps to phantasien t(2007-06-13) - 最近使った boost

    仕事腰を入れて C++ を使うになり, 久々に boost をさわっている. 以前より色々ライブラリが増えていて嬉しい. 今日は喜びの声をすこし. 普段から boost を使っている人にとっては当たり前の話題だと思います. boost::optional たとえば設定ファイルを扱うコードで, あるかどうかわからないオプションの扱いをを考える. "--log foo.log" と指定されたらログを foo.log に出力し, 何も指定されなければ標準エラー出力に書き出したいというような場合. けっこう悩ましい. よくある方法はこんなかんじ: class foo_config_t { ... bool has_log() const { return m_hash.contains("log"); } std::string logname() const { assert(has_log

    f99aq
    f99aq 2007/07/19
    boost::optional, boost::xpressive
  • C++で関数呼出しを視覚化 コールグラフを出力してみよう - higepon blog

    「Graphvizによるファンクション・コールの視覚化」を参考に、今開発中の Scheme インタプリタのコールグラフを出力してみた。 pvtrace のインストール http://www.mtjones.com/developerworks/pvtrace.zip 大きめの trace をしたいのであらかじめいくつかソースを書き換える。 symbols.h #define MAX_FUNCTIONS 2000 // 元は 200 だった stack.c #define MAX_ELEMENTS 50000 // 元は 500 だった インストール $ make $ sudo make install graphviz のインストール $ sudo apt-get install graphviz ターゲットのコンパイル 今回は Scheme のインタプリタがターゲット。 CXXFLAGS

    C++で関数呼出しを視覚化 コールグラフを出力してみよう - higepon blog
  • Google Japan Blog: Google が公開しているソフトウェアの解説 ( その 1 )

    メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。

    Google Japan Blog: Google が公開しているソフトウェアの解説 ( その 1 )
    f99aq
    f99aq 2007/07/12
    google-gflags
  • p_stade; - noncopyableは駄目かもしれない

    EBOが働かない場合があるらしい (参照) もう自分でprivate部を書く方が簡単だと思う

    p_stade; - noncopyableは駄目かもしれない
  • Technology ReviewによるBjarne Stroustrupインタビュー | El-ahrairahの日記 | スラド

    Technology ReviewにC++の創始者であるBjarne Stroustrupへのインタビューが掲載されている。 彼はC++が習得し辛く、使用し辛いという批判に対して興味深い意見を述べている。 以下は拙訳(意訳あり)。 Technology Review: なぜ多くのソフトウェアはそんなに粗悪なのでしょうか? Bjarne Stroustrup: 良いものもあります。Mars Rovers、 Google、 Human、 Genome Projectは高品質なソフトウェアです。15年前、こういうものを作るのは不可能だと思われていました。技術文明はソフトウェアに依存しているので、ソフトウェアがそんなにダメだったら我々はとうに滅びていたでしょう。 他方で、"平均的な"コードを見ると私はぞっとします。構造はひどいし、明らかにプログラマーは正しさやアルゴリズムやデータ構造、保全性につい

  • いやなブログ - RAII と setjmp/longjmp

    RAII と setjmp/longjmp C++ には RAII (Resource Acquisition Is Initialization) というイディオムがあります。これはリソースの開放を確実に行うためのテクニックとして C++ のプログラムで広く用いられています。しかし、RAII も setjmp/longjmp という落とし穴があります。 RAIIの基 次のプログラムはメモリリークを起こします。 #include <string> using namespace std; int main() { string *p = new string; return 0; } このプログラムをビルドして valgrind でテストすると次のようなエラーメッセージが表示されます。4バイトのメモリリークが検出されました。 % g++ test.cc % valgrind ./a.ou

    f99aq
    f99aq 2007/01/11
    そんな話し有ったっけ? COAP? > gymno; 例外機構を使え、ということか。
  • 2005-09-02

    今更 http://www.kmonos.net/wlog/52.php#_0308050827 http://d.hatena.ne.jp/Nabetani/20050901#p2 らへんを読んで,以前ここら辺の話題で遊んだことがあったので http://d.hatena.ne.jp/Cryolite/20041124#p1 そのときのやつをちこっとだけ変形. 続きを読む しかしわざわざlambda使わんでもえーやん,とゆ〜. あwwちょwwwこれダメじゃんwwwww上のなしねwwww memoizeしているようでしてないのはさすがにまずかったw 続きを読む 当にこれでOKなのか?tree recursionだからでかい数字で測定したらすぐに差が出るはずだし測定しとくか. 以下コード. 続きを読む VC++7.1 りりーすびるど Windows XP SP2 Athlon XP 240

    2005-09-02
    f99aq
    f99aq 2006/12/01
    fix + memoize