2015-12-16 7 views
4

Я пытаюсь найти «самый большой» элемент в пользовательском массиве, используя функцию max из библиотеки/заголовка алгоритма. Я провел некоторое исследование на ссылочном сайте cplusplus, но там я только видел, как сравнивать два элемента с помощью функции max, Вместо этого я пытаюсь отобразить максимальное число с помощью функции max, не создавая цикл «for», чтобы найти его. Например, у нас есть массив [] = {0,1,2,3,5000,5,6,7,8,9}, поэтому наибольшее число будет 5000. Я сделал этот код, но он дает у меня куча ошибок, что может быть проблемой?Max In a C++ Array

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

[ 'станд :: max_element (станд :: начать (массив), STD :: конец (массив))'] (http://en.cppreference.com/w/cpp/algorithm/max_element) – BoBTFish

+0

gcc не жаловался на 'max ((char *) array, array + n);', но почему? – MikeCAT

+1

@MikeCAT Это дает вам больше двух указателей (которые будут 'array + n'). – interjay

ответ

4

max_element - это функция, в которой вы нуждаетесь. Он возвращает итератор в максимальный элемент в заданном диапазоне. Вы можете использовать его как это:

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

Здесь вы можете найти более инфокоммуникационных об этой функции: http://en.cppreference.com/w/cpp/algorithm/max_element

+0

Благодарим вас за быстрый ответ, но есть способ найти максимальный элемент в массиве, используя только функцию «max»? – JohnnyOnPc

+0

@JohnnyOnPc Это версия функции 'max' для диапазонов. Это именно то, что вы должны использовать. – BoBTFish

+1

Вы можете использовать только функцию max: 'int result = array [0]; \t for (int i = 1; i Ardavel

0

Вот модификация вашей программы, которая делает то, что вы хотите:

#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, что означает, что я могу быть не более 10, что вам и нужно.

0

Вы можете также использовать std::array по #include<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