我正在使用套装。我使用自定义结构作为键。我正在插入一个值并试图找到插入的值。但它似乎永远找不到元素。
我已经覆盖了 == 运算符和 < 运算符。
这是结构的代码:
struct distance_t
{
public:
int id;
double distance;
bool operator<(const distance_t& rhs) const
{
if(distance < rhs.distance)
return true;
else
return false;
}
bool operator==( const distance_t& rhs)
{
if(id == rhs.id)
return true;
else
return false;
}
};
这是主要的代码
int main()
{
set<distance_t> currentSet;
distance_t insertDistance;
insertDistance.id =1;
insertDistance.distance = 0.5;
currentSet.insert(insertDistance);
distance_t findDistance;
findDistance.id = 1;
assert(currentSet.find(findDistance) != currentSet.end());
}
它总是在断言语句中失败。我究竟做错了什么?
编辑-好的,现在我知道它根本不使用 == 运算符。这就是我想要的。我需要按距离排序的数据结构。但我应该可以使用 id 将其删除。是否有任何干净的方法或已经存在的数据结构来做到这一点?