Is there a standard function that returns the position(not value) of the max element of an array of values?
For example:
Suppose I have an array like this:
You can use max_element()
function to find the position of the max element.
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 takes two iterators delimiting a sequence and returns an iterator pointing to the maximal element in that sequence. You can additionally pass a predicate to the function that defines the ordering of elements.
In the STL, std::max_element provides the iterator (which can be used to get index with std::distance, if you really want it).
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;
}
STL has a max_elements function. Here is an example: http://www.cplusplus.com/reference/algorithm/max_element/
Or, written in one line:
std::cout << std::distance(sampleArray.begin(),std::max_element(sampleArray.begin(), sampleArray.end()));