Mantendo os primeiros N elementos de um std :: vector <> e removendo o restante

eu tenho umstd::vector<int> variável na minhaC++ inscrição. O tamanho do vetor é determinado em tempo de execução, mas geralmente é cerca de1000.

Ordenei esse vetor (que funciona bem) e, após a classificação, gostaria de manter apenas o primeiro50 elementos.

Eu tentei:

kpts.erase(kpts.begin() + 50, kpts.end());

Ondekpts é o meu vetor e o desempenho é horrível! Presumivelmente por causa da maneiraerase opera.

Existe uma maneira de manter apenas o primeiro50 elementos de um vetor? Parece que deveria ser óbvio, mas não consigo encontrar uma maneira de fazer isso.

questionAnswers(1)

yourAnswerToTheQuestion