C++ C+中的最大值+;排列

C++ C+中的最大值+;排列,c++,arrays,C++,Arrays,我试图通过使用算法库/头中的max函数,在用户创建的数组中查找“最大”元素 我对cplusplus参考站点做了一些研究,但在那里我只看到了如何使用max函数比较两个元素。相反,我尝试使用函数“max”来显示最大数,而不必进行“for”循环来查找它 例如: 数组:Array[]={0,1,2,35000,5,6,7,8,9} 最高值:5000 我已经编写了这段代码,但它给了我一大堆错误,这可能是问题所在 #include <iostream> #include <algorith

我试图通过使用算法库/头中的max函数,在用户创建的数组中查找“最大”元素

我对cplusplus参考站点做了一些研究,但在那里我只看到了如何使用max函数比较两个元素。相反,我尝试使用函数“max”来显示最大数,而不必进行“for”循环来查找它

例如:

数组:
Array[]={0,1,2,35000,5,6,7,8,9}
最高值:
5000

我已经编写了这段代码,但它给了我一大堆错误,这可能是问题所在

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int array[11];
    int n = 10;
    for (int i = 0; i < n; i++) {
       array[i] = i;
    }
    array[5] = 5000;
    max(array , array + n);
    for (int i = 0; i < n; i++)
        cout << array[i] << " ";
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int数组[11];
int n=10;
对于(int i=0;icout
max\u element
是您需要的函数。它返回给定范围内max元素的迭代器。您可以这样使用它:

cout << " max element is: " << *max_element(array , array + n) << endl;

cout以下是对您的程序的一个修改,可以满足您的需要:

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int array[11];
    int n = 11;
    for (int i = 0; i < n; i++) {
        array[i] = i;
    }
    array[5] = 5000;

    cout << *std::max_element(array, array + n) << "\n";

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int数组[11];
int n=11;
对于(int i=0;icout您也可以使用
std::array
by
#include

@MikeCAT它提供两个指针中较大的一个(即
array+n
)。@johnyonpc它提供指向该元素的迭代器(在本例中是指针,是的)。您并没有真正说明要如何使用它。如果您只需要值,则会取消对结果的引用。您有一个错误,您没有初始化数组中的最后一个元素。请参阅我的答案。
std::begin
std::end
来自
标题,是的。尽管您可以使用
数组,但数组+n
,这些函数更安全。感谢您的快速响应,但是有没有办法只使用“max”函数来查找数组中的最大元素?@johnyonpc这是适用于范围的
max
函数的版本。这正是您应该使用的。您只能使用类似这样的max函数:
int result=array[0];例如(inti=1;i
但是我建议使用
max_元素
,因为它是用来解决您的问题的。为了让事情更混乱,还有一个
max
重载,您可以调用它,比如
std::max({a,b,c,d,e,f,g})
。该选项不适用于大多数情况,但在需要时非常方便。唯一需要注意的是,您必须使用
n
,使用@BoBTFish提供的
std::begin(array)
的选项可以处理该问题。
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
int main()
{
array<int,10> arr;
int n = 10;
for (int i = 0; i < n; i++) {
arr[i] = i;
}
arr[5] = 5000;


cout<<"Max: "<< *max_element(arr.begin(),arr.end())<<endl;


for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}