C++
3つ以上の文字列を何気なく + 演算子で連結すると、必ずしも効率的には動作しないコードになります。 std::string a = "Hello"; const char b[] = "World"; char c = '!'; std::string x = "\n" "<message>" + a + ',' + b + c + "</message>"; 実際は、std::basic_string の実…
C言語のライブラリを使っていると、構造体をデフォルト初期化してから、一部のメンバー変数だけ書き換えて利用することがしばしばあります。 option o = {}; o.name = "hello"; o.size = 1234; func(o); option 構造体のメンバー変数の仕様は一部だけが決ま…
普段、配列と std::vector ばかり使うので、BOOST_FOREACH よりも、単純にループ変数を回すコードが簡単に書ける方が嬉しい。 for (int i = 0, n = v.size(); i < n; ++i) { ... } FOR_INDEX (int i, v) { ... } そのためのマクロを書いてみた。 #include <cstddef> #</cstddef>…
半年くらい前に、ふとテキストエディタの強調機能を使って、C++のメンバ変数に色を付けてみたら、これがとても良かったのでおすすめする。数10行あるメンバ関数のコードを表示したときでも、その中で扱っているメンバ変数が、ぱっと一瞬で把握できる。それが…
A Brief Look at C++0xを読んで、今頃ながらC++0xのことを知った。C++0xはいまのC++の改良版ということなので、言語のコンセプトは変わらないようで、ほっとした。いままでもこれからも "general-purpose programming language with a bias towards systems …
C++は静的型言語。仮想関数とかRTTIとか使うと少し動的型っぽくなる。それとは逆に、すべてを静的に扱うテンプレート機能を使うと、なぜかかなり動的型言語に近いコーディングが可能になる。ふしぎなC++。
GCCのプリプロセッサの便利な拡張を知ったのでメモ。関数形式マクロの引数の数は固定、というのはよく知られていると思うけど、現在のC言語(C99)ではサポートされている。 // (1) #define DEBUG_PRINT(...) printf(__VA_ARGS__)C++の仕様には入っていない…