У меня есть такая структура данных:
struct Speed {
int set; //set by user
int act; //actual speed
int millis; //millis since epoch
}
vector<Speed> data;
Теперь я хочу нарисовать этот вектор. Чтобы создать красивую ось, я хочу найти максимум и минимум данных в этом векторе. Мне это нравится, но, очевидно, поскольку оно основано только на set
, оно подведет меня, если в какой-то момент act
будет меньше или больше, чем set
. Я имею в виду, что ось Y
диаграммы должна быть между минимумом set, act
и максимумом set, act
.
auto max = std::max_element(begin(data), end(data),
[&](const Speed& a, const Speed& b){
return a.set() < b.set();
//how about act?
});
auto min = std::min_element(begin(data), end(data),
[&](const Speed& a, const Speed& b){
return a.set() < b.set();
//how about act?
});
**Я ЗНАЮ**, как написать нормальный код без использования алгоритма и лямбда-выражений для достижения результата... но мне интересно посмотреть, как это можно сделать с алгоритмом/лямбдой БЕЗ перегрузки оператора в структуре.
Я мог бы также сделать то же самое для act
, а затем сравнить результаты... но это стоило бы мне 4 циклов!
max/min_element
возвращает итератор к одному из элементов коллекции? - person W.F.   schedule 09.10.2017std::min_element
... Но вы можете получить и минимальное, и максимальное значение в одном цикле с помощьюstd::minmax_element
. - person Phil1970   schedule 09.10.2017