簡體   English   中英

C++ 數組中的最大值

[英]Max In a C++ Array

我試圖通過使用算法庫/標頭中的 max 函數在用戶創建的數組中找到“最大”元素。

我在 cplusplus 參考站點上做了一些研究,但在那里我只看到了如何使用 max 函數比較兩個元素。 相反,我試圖使用函數 'max' 顯示最大數字,而不必進行 'for' 循環來找到它。

例如:

數組: array[]={0,1,2,3,5000,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;
}

max_element是您需要的功能。 它返回一個迭代器到給定范圍內的最大元素。 你可以這樣使用它:

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

在這里您可以找到有關此功能的更多信息: http : //en.cppreference.com/w/cpp/algorithm/max_element

這是對您的程序進行的修改,可以執行您想要的操作:

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

請注意,您的程序中有一個錯誤,您沒有初始化數組中的最后一個元素。 這會導致您的數組在最后一個元素中包含垃圾值。 我已經通過將 n 增加到 11 來解決這個問題。請注意,這是可以的,因為 for 循環中的條件是i < n ,這意味着 i 最多可以是 10,這就是您想要的。

您還可以通過#include<array>使用std::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;
}

有關std::array 的更多信息

#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    
    int arr[] = { 1, 45, 54, 71, 76, 12 };
  
   
    int n = sizeof(arr) / sizeof(arr[0]);
  
    
    cout << "Array: ";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
  

    cout << "\nMax Element = "
         << *max_element(arr, arr + n);
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM