[ERLEDIGT] std::list sort()-Funktion funktiert mit greater aber nicht mit less !?! [/ERLEDIGT]
-
Mein Problem ist folgendes:
Ich habe eine Liste
m_listcmpRating
mit Elementen vom Typ struct
CCompare
Diese soll sortiert werden.
Wenn ich absteigend sortiere:
[cpp]m_listcmpRating.sort(greater<CCompare>());[/cpp]
wird mein Proramm einwandfrei kompiliert.Wenn ich jedoch aufsteigend sortiere:
m_listcmpRating.sort(less<CCompare>());
gibt er mir folgende Fehlermeldung aus:
error C2664: 'void __thiscall std::list<struct CCompare,class std::allocator<struct CCompare> >::sort(struct std::greater<struct CCompare>)' : Konvertierung des Parameters 1 von 'struct std::less<struct CCompare>' in 'struct std::greater<struct CCompare>' nicht moeglich Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
Hier noch die Definition meines structs:
struct CCompare { CString m_strRefFile; CString m_strCmpFile; int m_iCmpNumber; int m_iRating; bool operator<(const CCompare &cmp) const { return m_iCmpNumber < cmp.m_iCmpNumber; } bool operator>(const CCompare &cmp) const { return m_iCmpNumber > cmp.m_iCmpNumber; } };
Habe jetzt übergangsweise
m_listcmpRating.reverse()
benutzt um richtige Sortierung zu bekommen, aber das ist ja nicht Sinn der Sache.
Weiß jemand einen Rat?
Gruß, Philipp
-
Bevier schrieb:
Weiß jemand einen Rat?
Ja. Forensuche benutzen. Diese VC6.0-only-Problem haben wir hier schon mindestens 837 Mal erörtert.
-
Sorry. Ich hatte vorher schon mal die Suche angeschmissen, allersdings mit anderen Schlüsselwörtern. Jetzt habe ich die Antwort hier gefunden: http://www.c-plusplus.net/forum/viewtopic.php?t=80864
Danke noch mal!
-
Hier findest du noch ein weiteres Beispiel:
http://www.c-plusplus.net/forum/viewtopic.php?t=98417&highlight=sort