セットを使用しています。キーとしてカスタム構造体を使用します。値を挿入して、挿入された値を見つけようとしています。しかし、それは要素を見つけることは決してないようです。
==演算子と<演算子の両方をオーバーライドしました。
構造のコードは次のとおりです。
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());
}
常にassertステートメントで失敗します。私は何が間違っているのですか?
編集-わかりました。==演算子をまったく使用していないことを理解しました。これが私が欲しいものです。データ構造を距離順に並べる必要があります。しかし、IDを使用して削除できるはずです。これを行うためのクリーンな方法または既存のデータ構造はありますか?