기본적인 생각은 모두 동일한 똑같은 일을하지만 약간 다른 방식으로 클래스의 "가족"이 있다는 것입니다. 이 "패밀리"는 "고성능"루프에서 사용되므로 속도가 핵심입니다. 또한 특정 패밀리는 구성 파일에 의해 지정됩니다.구조적/패턴 C++보다 효율적인 방법이 있습니까?
문제는 주요 기능에 엄청난 코드 반복이 있다는 것입니다. 이 구조를 구성하는 더 좋은 방법이 있나요? HP<objx> test
과 test.loop(bobloblaw)
을 세 번 쓸 필요는 없나요?
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 체포 개발 용. –