Ich benutze Sätze. Ich benutze eine benutzerdefinierte Struktur als Schlüssel. Ich füge einen Wert ein und versuche den eingegebenen Wert zu finden. Aber es scheint nie das Element zu finden.C++ std :: set Suche Funktion Überladung == Operator
Ich habe sowohl den Operator == als auch den Operator < außer Kraft gesetzt. Hier
ist der Code der Struktur:
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;
}
};
Und dies ist der Code der Haupt
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());
}
Es scheitert immer in der assert-Anweisung. Was mache ich falsch?
Edit -Ok jetzt verstehe ich, dass es den Operator == überhaupt nicht verwendet. Hier ist was ich will. Ich brauche die Datenstruktur nach Entfernung sortiert. Aber ich sollte es mit der ID entfernen können. Gibt es dafür einen sauberen Weg oder eine bereits vorhandene Datenstruktur?
Ein Stilvorschlag: wo hast du 'if (expr) zurück wahr; else return false; 'Sie könnten stattdessen einfach' return expr; ' – Blastfurnace
Was ist falsch mit nur' return id
@Blastofen Sie brauchen auch keine Klammern. –