基本的な考え方は、すべて同じことをするクラスの「ファミリ」がありますが、やや異なる方法です。この「ファミリ」は「高性能」ループで使用されるため、速度は本質的です。さらに、特定のファミリはコンフィグレーションファイルで指定されています。より効率的なC++の構造化/パターン化方法がありますか?
ここでの主な機能には驚異的なコードの繰り返しがあります。これを構造化するより良い方法があるので、HP<objx> test
とtest.loop(bobloblaw)
を3回書く必要はありませんか?
class obj1 {
public:
double f(double x) const { return 1.; }
};
class obj2 {
public:
double f(double x) const { return x; }
};
class obj3 {
public:
double f(double x) const { return x*x; }
};
template <class O>
class HP {
private:
O obj;
public:
double loop(const vector<double>& x) {
double s = 0.;
for (auto i : x) s += obj.f(i);
return s;
}
};
int main() {
string config = "bob";
double result = 0;
vector<double> bobloblaw;
/* Read configuration file to determine which object to use. */
if (config == "obj1") {
HP<obj1> test;
result = test.loop(bobloblaw);
} else if (config == "obj2") {
HP<obj2> test;
result = test.loop(bobloblaw);
} else if (config == "obj3") {
HP<obj3> test;
result = test.loop(bobloblaw);
}
return result;
}
+1ぼろぼろの場合 – JeremyFromEarth
+1の場合、逮捕された開発参照。 –