nit*_*ayc 1 c++ templates duplicates
我不想复制我的代码,但我有2个功能,除1行外,它们都是相同的.我确实需要单独的函数来调用私有函数,这可能是一个模板,并将解决我的重复代码问题.
double EuclideanDistance::calculateDistance(const Point &p1, const Point &p2) const
{
if (p1.getDimension()!=p2.getDimension())
return 0;
double sum = 0.0;
for( size_t i = 0; i < p1.getDimension(); i++)
{
sum += pow( p1[i] - p2[i], 2.0);
}
return sqrt(sum);
}
double EuclideanDistance::calculateWeightedDistance(const Point &p1, const Point &p2, const double *weights) const
{
if (p1.getDimension()!=p2.getDimension())
return 0;
double sum = 0.0;
for( size_t i = 0; i < p1.getDimension(); i++)
{
sum += pow( ((p1[i] - p2[i])*weights[i]), 2.0);//here is the difference
}
return sqrt(sum);
}
Run Code Online (Sandbox Code Playgroud)
你有什么建议?