我想做的就是检查一个元素是否存在于向量中,所以我可以处理每个案例.
if ( item_present )
do_this();
else
do_that();
Run Code Online (Sandbox Code Playgroud) 我试图解决的问题是:我有一个浮点容器(双向量矢量):
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)