Я писал программу для ввода оценок n
учащихся по четырем предметам, а затем определяю рейтинг одного из них на основе общего количества баллов (из codeforces.com: https://codeforces.com/problemset/problem/1017/A)..отметки в структуре помогут отслеживать различные предметы.
Теперь я просто внедрил сортировку пузырьков по вектору при проверке общего значения. Я хочу знать, есть ли способ, которым яможно отсортировать вектор только по одному из членов структуры, используя std::sort()
? Кроме того, как сделать его убывающим?
Вот как выглядит код прямо сейчас:
//The Structure
struct scores
{
int eng, ger, mat, his, tot, rank;
bool tommyVal;
};
//The Sort (present inside the main function)
bool sorted = false;
while (!sorted)
{
sorted = true;
for (int i = 0; i < n-1; i++)
{
if (stud[i].tot < stud[i + 1].tot)
{
std::swap(stud[i], stud[i + 1]);
sorted = false;
}
}
}
На всякий случай, если вам интересно, мне нужно найти звание ученика по имени Томас, поэтому для этого я установил значение tommyVal true для его элемента, а для остальных - значение false.Кстати, я легко могу найти метки Томаса, даже если его местоположение в векторе изменилось после сортировки по их суммарным меткам.
Также приятно знать, что std::swap()
работает для сваппиТакже целые структуры.Интересно, какие еще структуры данных он может поменять.