Вы используете std::min_element
и std::max_element
. Например, с учетом std::vector<int>
:
std::vector<int> v;
std::vector<int>::iterator it = std::max_element(v.begin(), v.end());
// 'it' points to the largest element in 'v'
Если вы хотите сравнить элементы, используя что-то отличное от operator<
(которое используется по умолчанию), вам нужно написать собственный компаратор:
bool compare_donut_diameters(const Donut& x, const Donut& y)
{
return x.diameter < y.diameter;
}
Используется как:
std::vector<Donut> v;
std::vector<Donut>::iterator it = std::max_element(v.begin, v.end(),
compare_donut_diameters);
Вы также можете реализовать компаратор с помощью функционального объекта (также называемого функтором) или, если ваш компилятор поддерживает лямбда-выражения, вы можете использовать лямбду:
auto it = std::max_element(v.begin(), v.end(),
[](const Donut& x, const Donut& y) { return x.diameter < y.diameter; });