我想要一個set<double> S;
並插入一些雙打。但我想要集合考慮1.0000001 == 1.0000000
(比較使用epsilon的雙打)(我的意思是如果我插入兩個數字的集合,set.size()應該等於一)。我知道如何通過運營商()(比較)來設定的,但我不知道如何傳遞給函數:傳遞operator ==來設置C++
const double eps = 1e-8;
bool operator==(double a, double b)
{
return abs(a - b) < eps;
}
設定的。
P.S:謝謝Sid。 @Sid:我發現:operator ==沒有被std :: set使用。元素a和b被認爲是相等的iff!(a < b)& &!(b < a)。
我不是C++專家,但我非常肯定,您需要使用傳遞關係作爲集合的比較。你的'operator =='不是傳遞的。 – 2012-02-06 18:34:15
@Complicatedseebio這兩個數字中的哪一個並不重要。重要的是他們中的一個在場。 – Farzam 2012-02-06 18:37:23
可能的重複[如何初始化一個std :: set比較器?](http://stackoverflow.com/questions/3782702/how-do-i-initialize-a-stdset-comparator) – 2012-02-06 18:39:13