DOSEIの日記

技術メモ+日常ログ

プログラミング

C FAQ

http://c-faq.com/ いつのまにか URL がオリジナルドメインに。しかもサイトが整理されて、見やすくなってるわ。

cvFindCornerSubPix()の罠

与える画像はグレースケール(1チャンネル)でないと "Bad type of mask argument" という例外で止まる。Undocumented. cvLoadImage() で第2引数に 0 を。

C++ コピーコンストラクタ

コピーコンストラクタが呼ばれる例。 値渡し引数 値渡し戻り値 初期化付き宣言 今 T 型を考え、コピーコンストラクタを T(T)、代入演算子を T operator=(T) とする。この場合 T a; // デフォルトコンストラクタ T b = T(10); // コンストラクタ T(int)。その…

cin の >> 演算子

この演算子は空白で区切られた一塊の文字列を読み込む。最初にホワイトスペース(空白文字)が連続する場合、デフォルトでは読み飛ばす。しかし、この次にget()メソッドを使おうと思っている場合、 >> は直後のホワイトスペースをひとつもバッファから取り除…

cvCalibrateCamera2 のサンプル

http://www.engr.ucsb.edu/~mquinn/opencv/

C(++) の unsigned の罠

ループカウンタや、個数など、負の値が必要ない場合、 usigned int を使用すると思う。単に unsigned と書けば、 unsigned int の省略形。で、 C では計算の際に異なる型が混じると、自動的に変換したりするややこしめのルールがあるが、なかでも unsigned …

ウィンドウイベント

OpenCV におけるマウスイベント処理の使えなさ ウィンドウプロシージャ(コールバック)からデータを取得するときは、グローバル変数を使わざるを得ない。 ウィンドウIDが文字列なのだが、ウィンドウタイトル(キャプション)としても使われるので、メッセー…

GSL の Legendre 多項式

GSL の Legendre 多項式は Abramowitz & Stegun による定義で、 の因子を含む。 これは Condon-Shortley Phase と呼ばれている。http://mathworld.wolfram.com/Condon-ShortleyPhase.html

MinGW 4.1.0

完全パッケージではなく、ダウンローダになった。インストールするバージョンも、最新、以前、候補から選べる。 念のため、前のバージョンをアンインスコ。

operator delete[]

C++ の delete[] 演算子は int *x = new int[5];のように new[] で確保された領域を破棄するのに使う。ただし、間違えて普通の delete でやってもえらーにはならないので超注意。 次のように解放する。 delete[] x;ちなみに、某ぼうようのページではこれが思…

size_t 型

C 言語の size_t 型についていろいろ調べたところ、仕様には unsigned integer とかかれている。が、 mbstowcs() とかの戻り値は (size_t)(-1) などを返すらしい。…負の数をキャストしてるということは、この場合 11111...111 というビット列が表す値を期待…

Code Complete の 2nd Ed.が出るようだ。 http://bpstore.nikkeibp.co.jp/item/main/1489100455X0.html http://bpstore.nikkeibp.co.jp/item/main/148910045680.html

C++ の初期化(2)

前回の続き。 普通のクラス変数定義 MyClass m;コンストラクタによる初期化付き定義 MyClass m(arg1, arg2);この構文をプリミティブ型(int, double, ...)に適応すると普通の代入と同じになるらしい。 int m(10); // <=> int m = 10;もちろん、 int m(10, 20)…

C++ の初期化

int a = 10; int a = int(10); int a(10); はすべて変数 a を 10 で初期化して宣言・定義する。 それぞれの細かい違いは何だろう?

C/C++ の規格書と、リファレンス

http://www.ishiboo.com/~nirva/c++/

教訓

C の剰余演算子 % は、負に対して思ったとおりにならない。 四捨五入は (int)(i + 0.5)

値型と参照型

値型とは、lvalue に直接代入できるデータ。たとえば、C 言語の int, char, double, ... などの基本型は値型で a = b; のようにすると、その値を直接代入する。ポインタ変数も値型だからその値(アドレス値)が代入される。C の構造体は値型だ。たとえば str…

MinGW 3.2.0-rc-3

そろそろリリース?

Digital Mars C/C++ Compiler

ちょっと使ってみる。 設定は特にいらない。 dm\bin にパスを通すだけ。 コマンドラインは dmc filename で OK. 拡張子省略可。デフォルトで全警告が出る。出力はファイル名+.exe -Aオプションで、 ANSI 準拠。C99 にもある程度対応してるようだ(-A99)。 -j(…

MinGW

MinGW-3.2.0 RC1 http://sourceforge.net/projects/mingw/

deque は デック(またはディーキュー)と発音する。queue と stack を合わせたデータ構造で、 double-ended queue の略である。「デキュー」って読んではいけない。 なお、C++のSTLでは queue のデータ操作は push と pop だが、一般的には enqueue と dequeue…

後判定ループ

for は後判定で、while は前判定であるのは周知の事実ではある。しかし、 while を前判定らしく使うことはほとんどなく、 while(1) // 無限ループ { // 処理 if(条件) break; } が慣用句である。これを do-while を使って書き換えることもできるが、あまり人…

assertion

プログラム中に、「ここでは必ずこうなっていなければいけない」というassertion(表明)を書いておくことで、バグを減らす。 Cには assert() マクロがあり、引数にかかれた条件が偽の場合 abort される。assertion はプログラムロジック上ありえない状態を…

実験用のプログラムがなぜかちゃんとコンパイルできない理由がわかった。 モジュールに分けたプログラムで、エラーとしてはリンカが「そんな関数ねーっス」とか言っているわけで、引数とかの型はあってるのに何でだろうと悩んでいたら、ヘッダに書いてあるプ…

C言語

例のポインタ本を読み、自分の知ってる知識を再確認しながらフンフンと読んでいる。やっぱこの本はためになる。 ところで、ここまで突っ込んで書かないと理解できない言語仕様ってどうなんだろう。いくらなんでも最低限、言語仕様は丸暗記できるほどのミニマ…

インストーラ付きプログラムの守るべきこと

関連付けをするやつは、その旨を表示して、無効にできること 標準・最小インストールは何をインストールするのか、確認する手段があること %SystemRoot%(%windir%) にアンインストーラ・log・iniを作らないこと むやみに All Users のデスクトップにショート…

配列とポインタ

以前の内容は不正確だったので、削除。

An Original Language (2)

2つ目の大きな思想は、ベクトル・行列計算の言語レベルの実装。とりあえずここでは、数値の型・精度・範囲なんかは考えないでおく。 "()"で囲まれたものは、ベクトルである。要素は","で区切る。単なる数はスカラである。 ( 0, 1, 2 ) ( 3, 4, −7 ) など。ベ…

An Original Language (1)

コレクションという概念。コレクションはオブジェクトの集合であって、そのすべてにメソッドを実行したり、部分集合を作ったり、と、集合演算が可能。じゃあセットといってもいいか。コンテキストにコレクションの要素を追加するには"+"で行う。実は、オブジ…

An Original Language (0)

自作言語が作りたい。いろいろアイディアは暖めてあるので、そろそろ本気で作り出そうかと考え中。まずは、チョコチョコメモしていく。まず、一番初めに考えたコンセプト、もしくはパラダイムは、コンテキスト・リファレンス方式(勝手に命名)。オブジェク…