Classifique std :: vector <int> mas ignore um determinado número

eu tenho umstd::vector<int> do tamanho 10 e cada entrada é inicialmente -1. Esse vetor representa uma tabela de classificação para o meu jogo (pontuações mais altas) e -1 significa que não há pontuação para essa entrada.

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

Quando o jogo é iniciado, desejo carregar a pontuação mais alta de um arquivo. Carrego cada linha (até 10 linhas), converto o valor encontrado em umint comstd::stoie, se o número for> 0, substituo-o pelo -1 atualmente no vetor na posição atual.

Tudo isso funciona. Agora, para o problema:

Como os valores no arquivo não são necessariamente classificados, quero classificarmyVector depois de carregar todas as entradas. Eu faço isso com

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

Isso classifica em ordem crescente (a pontuação mais baixa é melhor no meu jogo).

O problema é que, como o vetor é preenchido inicialmente com -1 e não há necessariamente 10 entradas salvas no arquivo de pontuações mais altas, o vetor pode conter alguns -1 além das pontuações do jogador.

Isso significa que, ao classificar o vetor com o código acima, todo o -1 aparecerá antes da pontuação do jogador.

Minha pergunta é: Como classifico o vetor (em ordem crescente), mas todas as entradas com -1 serão colocadas no final (já que não representam uma pontuação real)?

questionAnswers(6)

yourAnswerToTheQuestion