Сначала необходимо прочитать все значения, а затем отсортировать их после l oop.
Функция сортировки объявлена как:
void selectionSort(vector<int>& vector_values);
// ~~~~~~~~~~~~
, что означает, что она может принимать std::vector<int>
по ссылке. Итак, со ссылкой на ваш код вам нужно передать all_scores
, потому что он того же типа, который требуется для функции сортировки.
Итак, ваш код будет выглядеть так:
// Read values into the vectors
while (infile >> name >> score)
{
all_names.push_back(name);
all_scores.push_back(score);
}
// Values are populated, now sort here
selectionSort( all_scores );
Если вам необходимо использовать std::vector
, а также хотите сохранить связь между именами и связанными с ними баллами, альтернативным решением может быть std::vector<std::pair<std::string, int>>
или std::vector
агрегированного типа. т. е. struct
или class
.
С двумя векторными ограничениями вам нужно передать оба в функцию сортировки; и меняйте имена, когда вы меняете баллы, чтобы сохранить их взаимосвязь.
Для дальнейшего использования вы можете обратиться к ассоциативным контейнерам, таким как std :: map , чтобы решить такие проблемы.