C/C++

マハラノビス距離

OpenCVでマハラノビス距離を計算するには double norm = cvMahalanobis(x, mean, covinv); を用いると簡単に計算することができます。 cvmSub(x, mean, tmp1); // x-m cvmCopy(tmp1, tmp2); cvmMul(class_covinv, tmp2, tmp2); // covinv * (x-m) double nor…

M_PIはANSI標準ではない

円周率として定義されているM_PIはANSI標準ではない。なので、VC++で使うときは #define _USE_MATH_DEFINES #include <math.h> とする必要がある</math.h>

スタック領域を設定する

巨大な配列を静的に確保した場合などにおいて、 デフォルトのスタック領域のサイズをオーバーすること(StackOverflow)がある。その場合、配列を動的に確保するか、 スタック領域を大きくする必要がある。VC++において、スタック領域を大きくするには プロジ…

MoreEffectiveC++11-35

項目11 デストラクタから発生した例外を抑える 項目12 例外発生の仕方と引数渡しや仮想関数呼び出し地の違いを理解する 項目13 参照渡しで例外を受け取る 項目14 例外仕様を賢く用いる 項目15 例外処理のコストを理解する 項目16 80-20の規則を覚えておこう …

MoreEffectiveC++6-10

項目6:インクリメントとデクリメントの演算子で前置形式と後置形式を区別する 前置:参照を返す 後置:constオブジェクトを返す 項目7:&&, ||, ,をオーバーロードしない 短絡評価ができなくなる。 項目8:newとdeleteの別の意味を理解する new演算子:メモリを割…

Segmentation Faultの原因

Segmentation Faultの原因は主に不正なメモリへのアクセスです。 たとえば int array[10]; array[100] = 1; なんてことをしてしまうと起きてしまいます。 「こんなことやるわけねぇよ」なんて思っていても やってしまうものなのです。Segmentation Faultの起…

GCCでのコンパイルエラー

/usr/bin/ld: Undefined symbols: ___gxx_personality_v0 collect2: ld returned 1 exit status あるコンパイルをしたら上のようなエラーがでた。 オプションで -fno-exceptions をつけたら、エラーが消えた。

MoreEffectiveC++ 1-5

項目1:ポインタと参照の違い =ポインタ= ・nullが存在する。 なので、nullかどうかのチェックが必要になる。=参照= ・常にオブジェクトを参照する 項目2:C++スタイルのキャストを愛用する static_cast (式) const_cast (式) dynamic_cast (式) reinterpr…