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)?

Respuestas a la pregunta(6)

Su respuesta a la pregunta