プログラミング

参照渡しの密かなメリット

ポインタ渡しだとポインタか&を付けた変数でもないと渡せないが参照渡しなら一旦変数に保存しなくてもコンストラクタとか構造体(またはクラス)を返す関数の戻り値でも渡せる。— 侍マーケット@通勤3分 (@samraimarket) 2019年1月23日一時変数を消す際に役に立…

C/C++のswitch-caseはO(1)

仕事のプログラムでswitch-caseを使ってるプログラムを見て「確かswitch-caseってif-elseと同じでラベルの数に対してO(n)だったよな。O(log n)のstlのmapにでも書き換えさせたろ。」と思ったので調べてみたところ最近はハッシュによる探索でO(1)との情報を得…

循環複雑度/Cyclomatic Complexity

間違いなく学生時代に聞いたことがあるはずだけれども忘れてたのでメモ。 要するに一つの関数でどれくらいの経路があるか。小さければ小さいほど理想的で分岐命令とかループがあると増大していく。複雑な条件式(||とか&&とか)があるともっと増大する。 教科…

C++のtemplateについて

何なのか クラスや関数を定義する前に定義しておくことで型が違うだけのクラス、関数を作る際の手間を省くことが出来る。 でもそれだけじゃあない クラスを定義する直前のテンプレートの<>内のに名前をつけるとクラスのメンバのようにして使える。我ながらわ…

C++のライブラリboostにあるwaveの使い方

環境はubuntu、コンパイラはg++。 C++のすげぇライブラリboostにあるプリプロセス展開をおこなってくれるwaveを使おうと数日間四苦八苦したので覚書も兼ねて使い方を書いておこう。同じことで悩んだ人がググってここにたどり着くことを願う。まずwaveを使う…