sort libreria funcion cstdlib algorithms c++ algorithm

c++ - libreria - Encontrar la posición del elemento max



sort algorithm c++ (5)

¿Hay una función estándar que devuelve la posición (no el valor) del elemento máximo de una matriz de valores?

Por ejemplo:

Supongamos que tengo una matriz como esta:

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

Quiero una función que devuelva el número entero de 3 que me dice que sampleArray[3] es el valor más grande en la matriz.


En el STL, std::max_element proporciona el iterador (que se puede usar para obtener el índice con std::distance , si realmente lo desea).

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


O, escrito en una línea (esto debe ir como un comentario a la respuesta de Stephen, sin embargo, mi reputación no es suficiente):

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


Puede usar la función max_element() para encontrar la posición del elemento 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 toma dos iteradores que delimitan una secuencia y devuelve un iterador que apunta al elemento máximo en esa secuencia. También puede pasar un predicado a la función que define el orden de los elementos.