Hi ich habe einen Vektor von Zeigern, eigentlich ist jeder Zeiger ein Array, wo jedes Array ist:Wie benutzerdefinierte std :: sort Funktion verwenden?
int a, int b, Sequenz von Ganzzahlen variabler Größe.
Beispiel ungeordneter Vektor:
rows[0] => points to [1,2,...]
rows[1] => points to [2,1,...]
rows[2] => points to [3,1,...]
rows[3] => points to [1,4,...]
rows[4] => points to [1,1,...]
Ausgabebeispiel:
rows[0] => points to [1,1,...]
rows[1] => points to [1,2,...]
rows[2] => points to [1,4,...]
rows[3] => points to [2,1,...]
rows[4] => points to [3,1,...]
ich diesen Vektor auf diese Weise sortieren, muss ich die folgenden benutzerdefinierten Vergleichsfunktion zu erstellen:
bool cmpRow(unsigned int *a, unsigned int *b)
{
//Mesmo id word
if(a[0] == b[0])
{
return (a[1] < b[1]);
}
else
{
return (a[0] < b[0]);
}
}
und ich verwende es folgendermaßen:
std::vector<unsigned int*> rows;
.
.
//Insert some stuffs
.
.
std::sort (rows.begin(), rows.end(), cmpRow);
Aber das Ergebnis ist nicht wurde erwartet, kann mir jemand mit diesem Problem helfen?
Edit:
Eigentlich die Funktionen in Ordnung ist, das Problem in einer Funktion in einer Schleife war, riefen diese Funktionen der Sortierfunktion mehrmals als die notwendigen so das Ergebnis nicht die erwartete.
'std :: sort' sortiert die Elemente des zugrunde liegenden Containers im Bereich * [first, last) *. Die Reihenfolge' 1,1,1,2,3' sagt aus, dass Ihre Elemente tatsächlich sortiert sind Die Container-Elemente sind Arrays in Ihrem Fall, so dass nur diese sortiert werden und sie sind.Scheinen Sie, was Sie wollen, ist die einzelnen Array-Elemente jedes Vektor-Element zu sortieren, das ist nicht, was "std :: sort" tut. –
Veröffentlichen Sie auch Ihre erwartete Ausgabe. –
Was ist der Typ von 'Zeilen'? Welches Ergebnis bekommst du (dass du das nicht erwartest)? – Attila