首页 > 解决方案 > 如何比较矢量和浮动*

问题描述

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

bool compare(vector<float> A, float* B) 
{
  // what do I write here?
}

我该怎么做?我对指针不是很熟悉。

标签: c++arrayspointersstdvector

解决方案


您可以使用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精确相等的值不是一个好主意。您可能希望使用自定义比较器来检查值是否在某个容差范围内彼此接近。


推荐阅读