如何在不使用任何迭代器的情况下获取 Qt 中 QList 的最小值和最大值?

How to get the min and the max of a QList in Qt without using any iterator?

有没有办法在不使用任何迭代器的情况下在 Qt 中获取 QList 的最小值和最大值?

这是使用迭代器的代码:

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

您可以对列表进行排序,并将第一个和最后一个元素对应地作为最小值和最大值:

qSort(listVal.begin(), listVal.end());
double min = listVal.first();
double max = listVal.last();

如果您不想将迭代器作为结果而是直接将值作为结果,您可以直接引用结果:

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

并且在 C++17 中,使用结构绑定:

//assert(!listVal.empty());
auto [min, max] = *std::minmax_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;