0
でテンプレートで関数ポインタを交換しますすなわち、すべての機能を保存し、行列を埋めるために、関数ポインタの配列を使用できます。私は次のように、行列のエントリを埋めるためにC++ 11のコードを自動生成するスクリプト(Pythonのシンボリックツールボックス)を有するC++ 11
typedef double (*FillFunction) (double a, double b);
double J00(double a, double b) {return a+b;}
double J01(double a, double b) {return a-b;}
double J10(double a, double b) {return -a+b;}
double J11(double a, double b) {return -a-b;}
void main()
{
FillFunction J[2][2] = {{J00, J01}, {J10, J11}};
param0 = 0;
param1 = 1;
double Jresult[2][2];
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 2; j++)
{
Jresult[i][j] = J[i][j](param0, param1);
}
}
}
しかし、これは私のコードのパフォーマンスの重要な一部であり、私はこのようにではなく、特に以来、関数ポインタを使用していないだろうすべての関数はコンパイル時に認識されています。テンプレートなどでこれを行うためのきちんとした方法はありますか?
注:私はこのコードをコンパイルしていないので、実際にはうまくいくかどうかはわかりませんが、あなたがそのアイデアを得ることを願っています。
を、あなたは、単に 'constexpr'機能を作成することができます。 – Jarod42
C配列の代わりに 'std :: array、2u>'を使用できますか? –
Jarod42
行列全体を埋める* once *関数を生成しないのはなぜですか? – immibis