Dies ist der Code:C++ std :: set Komparator
struct comp
{
bool operator()(Reputation *one, Reputation *two)
{
if (one->Amount < 0 && two->Amount >= 0)
return false;
if (one->Amount >= 0 && two->Amount < 0)
return true;
if (one->Amount >= 0)
return one->Amount <= two->Amount;
else
return one->Amount >= two->Amount;
}
};
Und das ist das Problem:
Debug Assertion Failed!
Datei: .. \ VC \ include \ xtree
Line: 638Expression: ungültiger Operator <
Danach kann ich "Abbruch", "Wiederholen" oder "Ignorieren" wählen. Wenn ich ignoriere, kommen viele (identische) auf, aber es funktioniert perfekt.
Das Problem scheint zu auftreten, wenn ich eine Reputation mit -> Amount == zu einem der zuvor eingefügten Reputation * einfügen, aber ich bin mir nicht sicher über dieses letzte.
Jede Hilfe sehr
EDIT würde geschätzt: Die Reihenfolge ich sie will bestellt in zunächst die positiven in asc Ordnung, dann die negativen in absteigend sortiert. Beispiel: 1 5 10 11 11 20 50 -1 -5 -50
Danke, das hat es behoben. Sehr geschätzt! –
Ich bin froh, dass ich geholfen habe, das "debug assertion failed" Problem zu beheben, aber lies bitte meine letzte Bearbeitung über "uniqueness" - du brauchst eine Multiset, wie @Kasprzol sagt, wenn du mehrere Items behalten willst, die nicht unterscheidbar sind Komparator_. –
Ja, ich habe es bereits auf Kasprozls Rat hin zu einem Multiset konvertiert! –