假设一个类定义如下:快速模糊搜索在C++容器
class Test
{
public:
Test(int arg)
{
x = arg;
}
bool fuzzyEqual(const Test& other) const {
if (abs(x - other.x) < FUZZY_EQUAL)
return true;
else return false;
}
int x;
private:
static const int FUZZY_EQUAL = 5;
};
现在假设我们有很多元素的std::vector<Test>
。
给定一个新的Test
对象,是线性搜索以找到在载体中第一元素是“模糊”等于(类似于)给它的最快的方法?
此外,是否有一个像std::map
一样工作的容器,但它接受相似性而不是相等的概念?
至于为什么我问: 我表示一些其他物体几个值(在我的情况下,一个整数表示的图像),以及类似的图像会导致类似的值。在一个容器中一次插入一个值时,如果已经存在类似的值,我想避免添加一个值。我不关心在不同容器中插入结果的不同顺序。
将'=='重载为非传递是不好的做法,请使用'bool isSimilar(const Test&)'或其他方法。 –
@MooingDuck固定,谢谢! – Banex
我觉得隐藏在无意义的立面背后隐藏着一个非常明智的问题。也许如果你告诉我们你真的想做什么,我们可以给出解决方案。 – Veedrac