我有一个 std::vector float ,我不想包含重复项,但填充 vector 的数学不是 100% 精确的。该 vector 的值相差百分之几,但应视为同一点。例如,其中有一些值:
...
X: -43.094505
X: -43.094501
X: -43.094498
...
像这样从 vector 中删除重复项的最佳/最有效方法是什么。
最佳答案
首先使用 std::sort
对 vector 进行排序.然后使用 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
关于c++ - 如何从 C++ 中的 vector 中删除几乎重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23232271/