我需要比较两个浮点数组的值是否相等。我知道它们的长度是一样的。但不幸的是,数组不是相同的类型:
bool compare(vector<float> A, float* B)
{
// what do I write here?
}我该怎么做呢?我对指针不太熟悉。
发布于 2021-01-23 13:04:18
非常感谢大家!我现在就是这样做的,因为我知道这两个向量的长度是一样的。
bool compareSerAndPar(std::vector<float> Ser, float* Par, int size)
{
float eps = 0.01f;
for(int i = 0; i < size; i++)
{
float temp = fabs(Ser[i] - Par[i]);
if(temp > eps)
{
return false;
}
}
return true;
}发布于 2021-01-22 22:59:26
您可以使用std::equal来比较范围,即使它们有不同的类型,如下所示:
bool compare(std::vector<float> A, float* B) // [[ precondition: lengths are the same ]]
{
return std::equal(std::begin(A), std::end(A), B);
}这取决于大小相同的两个范围,这似乎适用于您的情况。
还请注意,将float值与精确相等进行比较并不是个好主意。您可能需要使用一个自定义比较器来检查这些值是否在某种容忍范围内彼此接近。
发布于 2021-01-23 10:15:59
这是你可以采取的方法。它从零开始,因此不使用外部功能。
bool compare(std::vector<float> A, float* B)
{
float sizeOfBlock = sizeof(B) / sizeof(float) + 1;
if(A.size() == sizeOfBlock)
{
for(int I = 0; I < A.size(); I++)
{
if(A[I] != B[I])
{
return false;
}
}
}
else
{
return false;
}
return true;
}https://stackoverflow.com/questions/65853865
复制相似问题