2010-06-01 118 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()))