2010-06-01 120 views
44

是否有一个标准函数返回值数组的最大元素的位置(非值)?查找最大元素的位置

例如:

假设我有一个数组是这样的:

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

我想返回的3,告诉我,sampleArray[3]是数组中最大值的整数的函数。

回答

74

在STL中,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; 
} 
+0

所以这个函数返回一个指针到最大的位置元件?我如何获得最大元素数组的位置? – Faken 2010-06-01 21:39:37

+0

@Faken:编辑显示。 – Stephen 2010-06-01 21:50:59

+1

使用函数distance()的时间复杂度是多少? – 2017-03-03 18:53:52

1

std::max_element需要两个迭代器分隔一个序列并返回指向该序列中最大元素的迭代器。您还可以将谓词传递给定义元素排序的函数。

4

您可以使用max_element()函数来查找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; 
} 
5

或者写在一条线(这应该是斯蒂芬的回答评论,但是我的名声是不够的):

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