Ich bin neu in C++ und habe Probleme beim Hinzufügen von Elementen zu einem Satz, Es scheint, dass nur das erste Element hinzugefügt wird. Ich vermute, dass es etwas mit meiner Vergleichsfunktion zu tun hat.C++ Hinzufügen von Elementen zu einem Set
Haupt
set<obj> objs;
objs.insert(obj1);
objs.insert(obj2);
objs.insert(obj3);
cout << objs.size() << endl; //Outputs 1
for (Obj const& obj: objs)
{
obj.display();
}
Mein Vergleich
bool operator<(const obj& Left, const obj& Right)
{
if (Left.getID() == Right.getID())
{
return true;
}
return false;
}
'std :: Set' erfordert eine strenge schwache Ordnung,' == 'nicht erfüllt diese Anforderung, ja vermuten, dass Sie Recht. Aber ich frage mich, warum jemand 'operator <' mit '==' implementiert, wie kommt Ihnen diese Idee in den Sinn? 'return' Left.getID()
Slava
wow danke. Wie markiere ich diese Frage als gelöst? –
@MichaelGrinnell: Nicht deine Schuld, Slava legte eine Antwort in den Kommentarraum. Ich werde es kopieren, damit Sie die Antwort markieren können. – MSalters