Класс forward_list: сортировка списка

Для сортировки списка предназначен метод sort(). Прототипы метода:

void sort();
template<typename Compare> void sort(Compare comp);

Первый прототип производит сортировку по умолчанию (в пользовательских классах должен быть перегружен оператор <, иначе получите ошибку при компиляции):

std::forward_list<int> arr = {4, 5, 3, 2, 6, 1};
arr.sort(); // Сортировка в прямом порядке
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4 5 6

Второй прототип позволяет указать пользовательский способ сравнения элементов. Функтор comp принимает два параметра и должен возвращать значение true, если первое значение меньше второго, и false — в противном случае. Отсортируем список в прямом и обратном порядке:

std::forward_list<int> arr = {4, 5, 3, 2, 6, 1};
// Сортировка в прямом порядке
arr.sort( [](int &a, int &b) {return a < b;} );
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 1 2 3 4 5 6
// Сортировка в обратном порядке
arr.sort( [](int &a, int &b) {return a > b;} );
for (int &el : arr) std::cout << el << ' ';
std::cout << std::endl; // 6 5 4 3 2 1

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов