私は最初の計算機を実装しようとしています。私の古いコード(switch-case):
enum arithmetic_type{
add = 0,
subtract = 1,
multiply = 2,
divide = 3
};
inline void calculate(double &var, double value, arithmetic_type type){
switch(type)
{
case add : var += value;break;
case subtract : var -= value;break;
case multiply : var *= value;break;
case divide : var /= value;break;
}
}
「関数定義へのポインタ」を見て、新しいアイデアを思いつきました。代わりに、別々の関数を使用します。今私のコードは次のようになります:
typedef void(*arithmetic_type)(double &var, double value); //template
inline void add(double &var, double value){var+=value;} //components
inline void subtract(double &var, double value){var-=value;}
inline void multiply(double &var, double value){var*=value;}
inline void divide(double &var, double value){var/=value;}
////////////////////////////////////////////////////////////////
struct VAR
{
double var_value;
arithmetic_type operator_type;
inline void calculate(double value){operator_type(var_value, value);}
};
switch-caseよりもはるかに簡単だと思います。さらに重要なのは、関係演算子などの他の演算子を追加することです。したがって、この新しいソリューションは、古いスイッチケースソリューションよりも明確で便利だと思います。:)
しかし、私はまだコードの速度とパフォーマンスについて疑問を持っています。パフォーマンスは速くなりますか?