Ordenar std :: vector <int> pero ignorar un cierto número
Yo tengo unstd::vector<int>
del tamaño 10 y cada entrada es inicialmente -1. Este vector representa una tabla de clasificación para mi juego (puntajes altos), y -1 solo significa que no hay puntaje para esa entrada.
std::vector<int> myVector;
myVector.resize(10, -1);
Cuando se inicia el juego, quiero cargar la puntuación más alta de un archivo. Carga cada línea (hasta 10 líneas), convierto el valor que se encuentra en unint
constd::stoi
, y si el número es> 0, lo reemplazo con el -1 actualmente en el vector en la posición actual.
Todo esto funciona. Ahora al problema:
Como los valores en el archivo no están necesariamente ordenados, quiero ordenarlosmyVector
después de cargar todas las entradas. Hago esto con
std::sort(myVector.begin(), myVector.end());
Esto lo ordena en orden ascendente (una puntuación más baja es mejor en mi juego).
El problema es que, dado que el vector se llena inicialmente con -1 y no hay necesariamente 10 entradas guardadas en el archivo de puntajes altos, el vector puede contener unos -1 además de los puntajes del jugador.
Eso significa que al ordenar el vector con el código anterior, todos los -1 aparecerán antes de los puntajes del jugador.
Mi pregunta es: ¿Cómo clasifico el vector (en orden ascendente), pero todas las entradas con -1 se colocarán al final (ya que no representan una puntuación real)?