- В задачах программирования часто требуется упорядочить не простые числа, а записи (структуры), содержащие несколько полей — например, фамилию, класс, баллы и т. д. В таком случае сортировка выполняется не по одному признаку, а по нескольким критериям (например, сначала по классу, затем по баллам и фамилии).
- Сортировка по нескольким критериям выполняется с помощью функции сравнения (компаратора), которая определяет, какой из двух элементов должен идти раньше. В стандартной библиотеке C++ для этого используется функция sort () из заголовка <algorithm>.
Пример. Нужно отсортировать массив учеников: по классу (возрастание), по баллам (убывание), по ФИО (по алфавиту).
Структура для хранения данных об ученике | Функция сравнения (компаратор) |
|---|---|
#include <iostream> using namespace std; string fio; int classNum; int ball; // Баллы | bool Compare(const Pupil& a, // 1. Сравниваем if (a.classNum < b.classNum) return true; if (a.classNum > b.classNum) return false; if (a.ball > b.ball) return true; if (a.ball < b.ball) return false; return a.fio < b.fio; } |