Max*_*ahm 3 c++ vector floating-accuracy duplicates duplicate-removal
我有一个浮点数的std :: vector我想不包含重复项,但是填充向量的数学运算不是100%精确的.向量的值相差几百,但应视为相同的点.例如,这里有一些值:
...
X: -43.094505
X: -43.094501
X: -43.094498
...
Run Code Online (Sandbox Code Playgroud)
从这样的向量中删除重复项的最佳/最有效方法是什么.
首先使用的矢量排序std::sort.然后使用std::unique自定义谓词删除重复项.
std::unique(v.begin(), v.end(),
[](double l, double r) { return std::abs(l - r) < 0.01; });
// treats any numbers that differ by less than 0.01 as equal
Run Code Online (Sandbox Code Playgroud)