[英]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.