¿Existe una función estándar que devuelva 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 entero de 3 que me diga que sampleArray[3]
es el valor más grande en la matriz.
RandomAccessIterator
, en cuyo caso es constante en el tiempo. En cualquier caso, la optimización se realiza internamente por usted.O, escrito en una línea:
std::cout << std::distance(sampleArray.begin(),std::max_element(sampleArray.begin(), sampleArray.end()));
fuente
Puede usar la
max_element()
función para encontrar la posición del elemento máximo.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; }
fuente
std::max_element
toma dos iteradores que delimitan una secuencia y devuelve un iterador que apunta al elemento máximo en esa secuencia. Además, puede pasar un predicado a la función que define el orden de los elementos.fuente
STL tiene una función max_elements. Aquí hay un ejemplo: http://www.cplusplus.com/reference/algorithm/max_element/
fuente