C++11 函数返回额外的0

C++11 函数返回额外的0,c++11,stdvector,C++11,Stdvector,我有一个计算两点之间距离的函数,一切正常,但最后我得到了一个额外的零 我的意见: 2 3, 12 30, 40 50, 5 1, 12 10, 3 4 0表示“无距离”,因此同一位置上必须有两个点。 当我查看您的输入时,似乎3有两次。 这是最短的距离,在那之后,再也找不到比这更短的了。是正确的,这是因为我使用的浮点数据类型不应该使用它们。是时候在调试器中逐条检查代码了。并验证输入以确保其有效且不包含任何不应包含的值。为什么要使用float作为循环索引?这几乎肯定是错的。是的,这太愚蠢了,

我有一个计算两点之间距离的函数,一切正常,但最后我得到了一个额外的零

我的意见:

2  3, 12 30, 40 50, 5  1, 12 10, 3  4
0表示“无距离”,因此同一位置上必须有两个点。 当我查看您的输入时,似乎3有两次。
这是最短的距离,在那之后,再也找不到比这更短的了。

是正确的,这是因为我使用的浮点数据类型不应该使用它们。

是时候在调试器中逐条检查代码了。并验证输入以确保其有效且不包含任何不应包含的值。为什么要使用
float
作为循环索引?这几乎肯定是错的。是的,这太愚蠢了,我改变了它这些是坐标对,3是(2,3)和(3,4)的一部分,它们绝对不应该是同一点。在cout线上放一个断点,当min变为0时,看看I和j是什么。这应该给你一个线索。可能错误在dist函数中。返回0的肯定是“dist”。你必须找出时间和原因。
float bruteForce(vector< pair <float,float> >::const_iterator brute, vector< pair <float,float> >::const_iterator end, float m)
{
    float min = FLT_MAX;

    for (int i = 0; i < m; i++)  
    {
        for (int j = i+1; j < m; j++)  
        {
            if ( dist(brute[i].first, brute[i].second, brute[j].first, brute[j].second ) < min)  
            {
                min = dist(brute[i].first, brute[i].second, brute[j].first, brute[j].second); 
                cout << min << endl; 
            }
        }
    }

    return min;
}


1.41421, 
11.4018, 
34.4093, 
0