我正试图计算两个点之间的距离。在C++中,我将这两个点存储在一个向量中:(0,0)和(1,1)。
我应该得到以下结果:
0
1.4
1.4
0
但我得到的实际结果是
0
1
-1
0
我认为我在使用vector迭代器的方式上出现了问题。我该如何解决这个问题?
我下面发布了代码。
typedef struct point {
float x;
float y;
} point;
float distance(point *p1, point *p2)
{
return sqrt((p1->x - p2->x)*(p1->x - p2->x) +
(p1->y - p2->y)*(p1->y - p2->y));
}
int main()
{
vector <point> po;
point p1; p1.x = 0; p1.y = 0;
point p2; p2.x = 1; p2.y = 1;
po.push_back(p1);
po.push_back(p2);
vector <point>::iterator ii;
vector <point>::iterator jj;
for (ii = po.begin(); ii != po.end(); ii++)
{
for (jj = po.begin(); jj != po.end(); jj++)
{
cout << distance(ii,jj) << " ";
}
}
return 0;
}
distance(ii, jj)
而得到std::distance
。 - Ben Voigtdistance
函数最明显的方法是在调用函数时写成::distance(...)
而不是distance(...)
。由于你的distance
函数是在全局命名空间中定义的,因此可以使用空前缀::distance
来限定函数名称(当然,在调用函数时必须解引用迭代器以正确调用函数)。 - ABu