【发布时间】:2017-11-18 13:40:47
【问题描述】:
我写了一个kd-tree模板,它的参数是自然数K。
作为模板的一部分,我编写了以下函数来计算两点之间的距离(kd_point 是 std::array 的别名)
template <unsigned K>
float kd_tree<K>::DistanceSq(const kd_point &P, const kd_point &Q)
{
float Sum = 0;
for (unsigned i = 0; i < K; i++)
Sum += (P[i] - Q[i]) * (P[i] - Q[i]);
return Sum;
}
我已打开“启用 C++ 核心检查(发布)”,它给了我上述警告。是否有正确的方法编写此例程以消除警告?
【问题讨论】:
-
基本上这意味着不要使用原始
for循环,使用范围for循环。我不知道它如何适用于您的情况,但也许其他人可以阐明。 -
我知道如何编写一个范围 for 循环来访问任一 kd 点的每个元素。如何编写一个循环范围以访问两者以计算差异?
标签: c++ guideline-support-library