如何在具有最小位置的向量中找到最大值?
例如,如果我有向量v[5] = {2,2,1,1,1}
,输出将是v[0]
.
一种惯用的方法是使用std::max_element
. 这将返回一个指向最大元素的迭代器:
#include <algorithm> // for std::max_element
#include <iterator> // for std::begin, std::end
#include <iostream>
int main()
{
v[5] = {2,2,1,1,1};
auto it = std::max_element(std::begin(v), std::end(v));
std::cout << *it << std::endl;
}
如果需要元素的索引,可以使用std::distance
:
std::cout << "index " << std::distance(std::begin(v), it) << std::endl;
从数组末尾查找数组中的最大值,用于单遍实现
以下是您可以在自己的循环中执行此操作的方法:
if(!v.size()) return -1;
int maxValue = v[0], maxPosition = 0;
for(int i = 1; i < v.size(); i++) {
if(v[i] > maxValue) maxValue = v[maxPosition = i];
}
return maxPosition;
如果您想获得最大值的最后一次出现,只需更改if(v[i] > maxValue)
或if(v[i] >= maxValue)
更改循环以返回到前面。