Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在具有最小位置的数组中查找最大元素_C++_Vector_Max_Minimum - Fatal编程技术网

C++ 在具有最小位置的数组中查找最大元素

C++ 在具有最小位置的数组中查找最大元素,c++,vector,max,minimum,C++,Vector,Max,Minimum,如何在一个具有最小位置的向量中找到最大值 例如,如果我有向量v[5]={2,2,1,1,1},那么输出将是v[0]为单程实现从数组末尾查找数组中的最大值。这将返回最大元素的迭代器: #include <algorithm> // for std::max_element #include <iterator> // for std::begin, std::end #include <iostream> int main() { v[5] = {2,2

如何在一个具有最小位置的向量中找到最大值


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

为单程实现从数组末尾查找数组中的最大值。这将返回最大元素的迭代器:

#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;
}

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

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.size())返回-1;
int maxValue=v[0],maxPosition=0;
对于(int i=1;imaxValue)maxValue=v[maxPosition=i];
}
返回最大位置;

如果要获取最大值的最后一次出现,只需将
If(v[i]>maxValue)
更改为
If(v[i]>=maxValue)
或将循环更改为向后工作。

欢迎使用堆栈溢出。请尽快阅读这一页。你试过什么?一般来说,如果你展示了你的尝试,人们会帮助你修复代码,但不会为你编写代码。显然,有一种2遍算法,第一遍通过数组确定最大值,第二遍确定该值首先出现的索引。然而,也有一个1-pass算法。你应该找找看。这真的没那么难。此外,您感兴趣的是表示最大值出现的最小位置的索引,而不是值。
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;