Sort std :: vector <int> aber ignoriere eine bestimmte Zahl

Ich habe einstd::vector<int> der Größe 10 und jeder Eintrag ist anfänglich -1. Dieser Vektor stellt eine Rangliste für mein Spiel dar (Highscores), und -1 bedeutet nur, dass für diesen Eintrag keine Punktzahl vorhanden ist.

std::vector<int> myVector;
myVector.resize(10, -1);

Wenn das Spiel gestartet wird, möchte ich den Highscore aus einer Datei laden. Ich lade jede Zeile (bis zu 10 Zeilen), konvertiere den gefundenen Wert in einint mitstd::stoi, und wenn die Zahl> 0 ist, ersetze ich sie durch die -1, die sich derzeit im Vektor an der aktuellen Position befindet.

All das funktioniert. Nun zum Problem:

Da die Werte in der Datei nicht unbedingt sortiert sind, möchte ich @ sortiermyVector nachdem ich alle Einträge geladen habe. Ich mache das mit

std::sort(myVector.begin(), myVector.end());

Dies sortiert es in aufsteigender Reihenfolge (niedrigere Punktzahl ist in meinem Spiel besser).

Das Problem ist, dass der Vektor, da der Vektor anfänglich mit -1 gefüllt ist und nicht unbedingt 10 Einträge in der Highscore-Datei gespeichert sind, zusätzlich zu den Punktzahlen des Spielers einige -1 enthalten kann.

Das bedeutet, dass beim Sortieren des Vektors mit dem obigen Code alle -1 vor den Punktzahlen des Spielers angezeigt werden.

Meine Frage ist Wie sortiere ich den Vektor (in aufsteigender Reihenfolge), aber alle Einträge mit -1 werden am Ende platziert (da sie keine echte Punktzahl darstellen)?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage