Нахождение позиции максимального элемента - PullRequest
59 голосов
/ 02 июня 2010

Существует ли стандартная функция, которая возвращает позицию (не значение) элемента max массива значений?

Например:

Предположим, у меня есть такой массив:

sampleArray = [1, 5, 2, 9, 4, 6, 3]

Мне нужна функция, которая возвращает целое число 3, которое говорит мне, что sampleArray[3] является наибольшим значением в массиве.

Ответы [ 5 ]

99 голосов
/ 02 июня 2010

В 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;
}
18 голосов
/ 09 марта 2017

Или написано в одну строку:

std::cout << std::distance(sampleArray.begin(), std::max_element(sampleArray.begin(), sampleArray.end()))
4 голосов
/ 01 ноября 2016

Вы можете использовать функцию 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;
}
1 голос
/ 02 июня 2010

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

0 голосов
/ 02 июня 2010

STL имеет функцию max_elements. Вот пример: http://www.cplusplus.com/reference/algorithm/max_element/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...