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;
}
STL tiene una función max_elements. Aquí hay un ejemplo: std::max_element
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.