首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较vector<float>和float*

如何比较vector<float>和float*
EN

Stack Overflow用户
提问于 2021-01-22 22:56:20
回答 3查看 588关注 0票数 1

我需要比较两个浮点数组的值是否相等。我知道它们的长度是一样的。但不幸的是,数组不是相同的类型:

代码语言:javascript
复制
bool compare(vector<float> A, float* B) 
{
  // what do I write here?
}

我该怎么做呢?我对指针不太熟悉。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-23 13:04:18

非常感谢大家!我现在就是这样做的,因为我知道这两个向量的长度是一样的。

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2021-01-22 22:59:26

您可以使用std::equal来比较范围,即使它们有不同的类型,如下所示:

代码语言:javascript
复制
bool compare(std::vector<float> A, float* B) // [[ precondition: lengths are the same ]]
{
  return std::equal(std::begin(A), std::end(A), B);
}

这取决于大小相同的两个范围,这似乎适用于您的情况。

还请注意,将float值与精确相等进行比较并不是个好主意。您可能需要使用一个自定义比较器来检查这些值是否在某种容忍范围内彼此接近。

票数 8
EN

Stack Overflow用户

发布于 2021-01-23 10:15:59

这是你可以采取的方法。它从零开始,因此不使用外部功能。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65853865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档