Fehlermeldung:"ungültige Komparator", wenn die Sortierung mithilfe von benutzerdefinierten Vergleichsfunktion
Ich versuche zu Sortieren, einige ganze zahlen und machen ungeraden zahlen gefolgt von noch lieben. Ich benutze Visual Studio 2015.
Hier ist mein code:
int w[]={1,2,3,4,5,6};
sort(w,w+6,[](const int&i,const int&j)->bool {
return (i&1)==(j&1)//When both are odd or even, the order is OK
||i&1;//if one is odd and one is even,check if the first one is odd
});
Ausgeführt, wenn es auf einen Fehler der sagt "Ausdruck: ungültige Komparator". Ich weiß nicht warum, es würde zu diesem Fehler führen. Wie es zu ändern?
Du musst angemeldet sein, um einen Kommentar abzugeben.
sort
erfordert eine strenge schwache bestellen. Ihre Komparator nicht ein. Unter vielen anderen Dinge, die für eine strenge schwache Bestellungcomp(x, x)
mussfalse
.sort
ist der falsche Algorithmus für diese sowieso (ja, Sie können verzerren, es zu tun, was Sie wollen; Nein, Sie sollten es nicht tun). Was Sie tun möchten, ist eine partition. Dafür haben wirstd::partition
:Oder
std::stable_partition
, wenn Sie wollen, dass die partition stabil zu sein (behalten Sie die relative Reihenfolge der Elemente).sort
für die Partitionierung, aber das ist die beste Antwort.(x % 2) < (y % 2)
? (oder>
gar nicht darüber nachdenken, was)