如何在不使用任何迭代器的情况下获取 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;
有没有办法在不使用任何迭代器的情况下在 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;