Сортировать std :: vector <int>, но игнорировать определенное число
у меня естьstd::vector<int>
размером 10 и каждая запись изначально -1. Этот вектор представляет таблицу лидеров для моей игры (высокий балл), а -1 означает, что для этой записи нет баллов.
std::vector<int> myVector;
myVector.resize(10, -1);
Когда игра запускается, я хочу загрузить рекорд из файла. Я загружаю каждую строку (до 10 строк), конвертирую найденное значение вint
сstd::stoi
и, если число> 0, я заменяю его на -1 в настоящее время в векторе в текущей позиции.
Все это работает. Теперь к проблеме:
Поскольку значения в файле не обязательно отсортированы, я хочу отсортироватьmyVector
после того, как я загружаю все записи. Я делаю это с
std::sort(myVector.begin(), myVector.end());
Это сортирует их в порядке возрастания (чем меньше баллов, тем лучше в моей игре).
Проблема заключается в том, что, поскольку вектор изначально заполнен -1, а в файле рекордов не обязательно сохраняются 10 записей, вектор может содержать несколько -1 в дополнение к баллам игрока.
Это означает, что при сортировке вектора с указанным выше кодом все -1 будут отображаться до счета игрока.
Мой вопрос: Как отсортировать вектор (в порядке возрастания), но все записи с -1 будут помещены в конец (так как они не представляют реальный счет)?