C++でVectorに触れた
画像処理100本ノック、問32番へ取り組んだ際に問題が発生したので記録します。 github.com
double型の複素数を要素に持つ二次元配列を使用したらVisual Studioに怒られました。 スタック領域では16KBまでしか使えないとかなんとか...
そこで友人の力を借りてVector型について学び、無事解決できました。
怒られたコード
〜 struct fourier_str { std::complex<double> coef[height][width]; }; 〜
修正したコード
〜 struct fourier_str { std::vector<std::vector<std::complex<double> > > coef; fourier_str() : coef(height,std:: vector<std::complex<double> >(width)) {} }; 〜
[5月18日追記]
二次元配列を使用して怒られた際には、作成した構造体を引数に持つ関数を幾つか作成するプログラムでしたが、これをすべてmain関数にまとめてしまうと怒られなくなりました...。 謎は深まる...。