Нахождение максимального элемента
есть ли стандартная функция, которая возвращает позицию(не значение) максимальный элемент массива значений?
например:
предположим, что у меня есть такой массив:
sampleArray = [1, 5, 2, 9, 4, 6, 3]
Я хочу функцию, которая возвращает целое число 3, которое говорит мне, что sampleArray[3]
наибольшее значение в массиве.
5 ответов:
в 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; }
или, написанный в одной строке (это должно идти как комментарий к ответу Стивена, однако моей репутации недостаточно):
std::cout << std::distance(sampleArray.begin(), std::max_element(sampleArray.begin(), sampleArray.end()))
можно использовать
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; }
std::max_element
принимает два итератора отграничение последовательности и возвращает итератор, указывающий на максимальный элемент в этой последовательности. Вы можете дополнительно передать предикат функции, которая определяет порядок элементов.
STL имеет функцию max_elements. Вот пример: http://www.cplusplus.com/reference/algorithm/max_element/