Как получить минимальное и максимальное значения QList в Qt без использования итератора?

Есть ли способ получить минимальное и максимальное значения QList в Qt без использования итератора?

Вот код с использованием итератора:

QList<double>::iterator min = std::min_element(listVal.begin(), listVal.end());
QList<double>::iterator max = std::max_element(listVal.begin(), listVal.end());

3 ответа

Решение

Если вам не нужен итератор как результат, а непосредственно значение, вы можете напрямую отложить результат:

//assert(!listVal.empty());
double min = *std::min_element(listVal.begin(), listVal.end());
double max = *std::max_element(listVal.begin(), listVal.end());

Избегая кругового перемещения контейнера:

QList<int> l {2,34,5,2};
auto mm = std::minmax_element(l.begin(), l.end());
qDebug() << *mm.first << *mm.second;

Вы можете отсортировать свой список и взять первый и последний элементы как min и max соответственно:

qSort(listVal.begin(), listVal.end());
double min = listVal.first();
double max = listVal.last();
Другие вопросы по тегам