在向量的排序向量中查找特定值的索引范围
Find index range of specific values in sorted vector of vectors
我对 x、y、z 值进行了排序 std::vector<std::vector<double>>
,如下所示,
0.0, 0.0, 0.0
0.0, 0.0, 0.1
0.0, 0.0, 0.2
0.0, 0.1, 0.0
0.0, 0.2, 0.1
0.0, 0.2, 0.3
我想找到特定 x 和 y 值的所有 z 值,
ex - z 值为 0.0, 0.0, 应该 return
0.0, 0.0, 0.0
0.0, 0.0, 0.1
0.0, 0.0, 0.2
我尝试使用
struct MatchDouble
{
MatchDouble(double _x,double _y) : x(_x), y(_y) {}
bool operator()(std::vector<double> &n)
{
return fabs(x - n[0]) < FLT_EPSILON && fabs(y - n[1]) < FLT_EPSILON;
}
private:
double x, y ;
};
it = find_if(allpoints.begin(), allpoints.end(),MatchDouble(0.0,0.0));
但这只给我一个指向单个向量值的迭代器。哪种方法最适合实现此目的?
谢谢。
std::vector<std::vector<double>> ret;
std::copy_if(allpoints.begin(), allpoints.end(), std::back_inserter(ret), MatchDouble(0.0,0.0));
return ret;
这将创建一个与 allpoints
相同类型的新 vector
ret 并使用 copy_if
仅复制兴趣点
我对 x、y、z 值进行了排序 std::vector<std::vector<double>>
,如下所示,
0.0, 0.0, 0.0
0.0, 0.0, 0.1
0.0, 0.0, 0.2
0.0, 0.1, 0.0
0.0, 0.2, 0.1
0.0, 0.2, 0.3
我想找到特定 x 和 y 值的所有 z 值, ex - z 值为 0.0, 0.0, 应该 return
0.0, 0.0, 0.0
0.0, 0.0, 0.1
0.0, 0.0, 0.2
我尝试使用
struct MatchDouble
{
MatchDouble(double _x,double _y) : x(_x), y(_y) {}
bool operator()(std::vector<double> &n)
{
return fabs(x - n[0]) < FLT_EPSILON && fabs(y - n[1]) < FLT_EPSILON;
}
private:
double x, y ;
};
it = find_if(allpoints.begin(), allpoints.end(),MatchDouble(0.0,0.0));
但这只给我一个指向单个向量值的迭代器。哪种方法最适合实现此目的?
谢谢。
std::vector<std::vector<double>> ret;
std::copy_if(allpoints.begin(), allpoints.end(), std::back_inserter(ret), MatchDouble(0.0,0.0));
return ret;
这将创建一个与 allpoints
相同类型的新 vector
ret 并使用 copy_if