有没有标准的函数可以返回值数组中最大元素的位置而不是其值?
例如:
假设我有一个像这样的数组:
例如:
假设我有一个像这样的数组:
sampleArray = [1, 5, 2, 9, 4, 6, 3]
我想要一个函数,返回数字3的整数值,告诉我sampleArray[3]
是数组中最大的值。
std::max_element
提供了迭代器(如果你真的需要可以使用std::distance
来获取索引)。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;
}
或者,写成一行:
std::cout << std::distance(sampleArray.begin(),std::max_element(sampleArray.begin(), sampleArray.end()));
max_element()
函数来查找最大元素的位置。int main()
{
int num, arr[10];
cin >> num;
for (int i = 0; i < num; i++)
{
cin >> arr[i];
}
cout << "Max element Index: " << max_element(arr, arr + num) - arr;
return 0;
}
cout<<max_element(arr.begin(), arr.end()) - arr.begin();
std::distance(begin(A), std::max_element(begin(A), end(A)))
,它适用于C风格的数组和STL容器;对于数组,它可以简化为std::distance(A, max_element(A, A+N))
,正如被接受的答案所示。 - zkoza
RandomAccessIterator
,在这种情况下,时间复杂度是恒定的。无论如何,优化都是内部完成的。 - Scorch