Поиск положения максимального элемента
Есть ли стандартная функция, которая возвращает позицию (не значение) максимального элемента массива значений?
Например:
Предположим, что у меня есть такой массив:
sampleArray = [1, 5, 2, 9, 4, 6, 3]
Мне нужна функция, которая возвращает целое число из 3, которое сообщает мне, что sampleArray[3]
является наибольшим значением в массиве.
Ответы
Ответ 1
В STL std::max_element
предоставляет итератор (который может использоваться для получения индекса с std::distance
, если вы действительно этого хотите).
int main(int argc, char** argv) {
int A[4] = {0, 2, 3, 1};
const int N = sizeof(A) / sizeof(int);
cout << "Index of max element: "
<< distance(A, max_element(A, A + N))
<< endl;
return 0;
}
Ответ 2
Или написано в одну строку:
std::cout << std::distance(sampleArray.begin(), std::max_element(sampleArray.begin(), sampleArray.end()))
Ответ 3
Вы можете использовать функцию max_element()
, чтобы найти положение элемента max.
int main()
{
int num, arr[10];
int x, y, a, b;
cin >> num;
for (int i = 0; i < num; i++)
{
cin >> arr[i];
}
cout << "Max element Index: " << max_element(arr, arr + num) - arr;
return 0;
}
Ответ 4
std::max_element
принимает два итератора, ограничивающих последовательность, и возвращает итератор, указывающий на максимальный элемент в этой последовательности. Вы можете дополнительно передать предикат функции, которая определяет упорядочение элементов.
Ответ 5
STL имеет функцию max_elements.
Вот пример: http://www.cplusplus.com/reference/algorithm/max_element/