假設一個類定義如下:快速模糊搜索在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