Разделить массив согласно условию
Задание звучит так: Отсортировать массив таким образом, что бы сначала шли элементы которые отличаются от максимального на 20%, а потом все остальные, с помощью библиотеки algorithm и контейнера vector
void sortMax20 (vector<int>& vec)
{
auto maxnum = max_element(vec.begin(), vec.end());
cout << "Max num = " << *maxnum << endl;
partition(vec.begin(), vec.end(), [](auto& em) {return em + (em * 0,2) >= 9; });
}
Я решил сделать это с помощью алгоритма partition но вместо 9 в условии у меня должно быть переменная maxnum, как это реализовать?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Используйте захват, примерно так:
partition(vec.begin(), vec.end(), [maxnum](auto& em) {return em + (em * 0,2) >= *maxnum; });
и не забывайте, что max_element возвращает не значение, а итератор.