web-dev-qa-db-fra.com

Trouver la position de l'élément max

Existe-t-il une fonction standard qui renvoie la position (et non la valeur) de l'élément max d'un tableau de valeurs?

Par exemple:

Supposons que j'ai un tableau comme celui-ci:

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

Je veux une fonction qui renvoie l'entier de 3 qui me dit que sampleArray[3] est la plus grande valeur du tableau.

62
Faken

Dans la STL, std::max_element fournit l'itérateur (qui peut être utilisé pour obtenir l'index avec std::distance , si vous le voulez vraiment).

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;
}
104
Stephen

Ou, écrit sur une seule ligne:

std::cout << std::distance(sampleArray.begin(), std::max_element(sampleArray.begin(), sampleArray.end()))
18
Alex

Vous pouvez utiliser la fonction max_element() pour trouver la position de l'élément 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
rashedcs

std::max_element prend deux itérateurs délimitant une séquence et retourne un itérateur pointant vers l'élément maximal de cette séquence. Vous pouvez en outre transmettre un prédicat à la fonction qui définit l'ordre des éléments.

1
avakar

STL a une fonction max_elements. Voici un exemple: http://www.cplusplus.com/reference/algorithm/max_element/

0
Uri