相关疑难解决方法(0)

如何确定std :: vector中是否存在某个项?

我想做的就是检查一个元素是否存在于向量中,所以我可以处理每个案例.

if ( item_present )
   do_this();
else
   do_that();
Run Code Online (Sandbox Code Playgroud)

c++ vector std

587
推荐指数
14
解决办法
88万
查看次数

是否有STL算法根据某种容差来查找容器中是否存在元素?

我试图解决的问题是:我有一个浮点容器(双向量矢量):

std::vector<std::vector<double>> dv { {0.0, 0.0}, {1.0, 0.0}, {0.0, 1.0}, {1.0, 1.0} };
Run Code Online (Sandbox Code Playgroud)

然后,假设我有一个新点(双向量):

std::vector<double> v1 {0.0001, 1.0};
Run Code Online (Sandbox Code Playgroud)

我想根据一些容差来检查dv容器中是否存在点v1.两个矢量之间的距离计算为欧几里德距离.

我查看了相关的问题和答案:

并且也试图使用std::find_if()而没有任何成功,因为它只接受一元谓词.

目前我想出了一个临时解决方案.首先,我创建了一个通用函数来查找两个向量之间的欧几里德距离:

template <typename InputIt1, typename InputIt2>
double EuclideanDistance(InputIt1 beg1, InputIt1 end1, InputIt2 beg2) {
  double val = 0.0;
  while (beg1 != end1) {
    double dist = (*beg1++) - (*beg2++);
    val += dist*dist;
  }
  return val > 0.0? sqrt(val) : 0.0;
}
Run Code Online (Sandbox Code Playgroud)

其次,我创建了一个check_if函数来检查元素是否基于容差(Epsilon)呈现在容器中:

template …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm c++11

5
推荐指数
1
解决办法
568
查看次数

标签 统计

c++ ×2

algorithm ×1

c++11 ×1

std ×1

vector ×1