找到具有最小位置的数组中的最大元素

时间:2013-11-09 09:02:16

标签: c++ vector max minimum

如何在具有最小位置的矢量中找到最大值?

例如,如果我有向量v[5] = {2,2,1,1,1},则输出将为v[0]

3 个答案:

答案 0 :(得分:2)

这样做的惯用方法是使用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;

答案 1 :(得分:0)

从单元末尾的数组末尾查找数组中的最大值

答案 2 :(得分:0)

以下是如何在自己的循环中执行此操作:

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)或更改循环即可恢复工作。