2016-12-04 79 views
0

我嘗試使用std庫儘可能地和我有性病問題::最大的std :: Max,具有動態數組

#include <algorithm> 

void foo(size_t elem) 
{ 
    auto testArray = new double[elem]; 
    for(int i = 0; i < elem; ++i) 
    { 
    testArray[i] = i; 
    } 

    auto maxElem = std::max(testArray, testArray + (elem - 1)); 
    delete[] testArray; 
} 

什麼是在傳遞的最佳方式這裏的std :: max函數的參數?我希望我可以讓這個數組的行爲像一個帶有模板的迭代器。

+1

它應該是'testArray + elem',而不是'testArray +(elem - 1)'。 – timrau

+0

我用+ elem試了一下,發現了一些意想不到的行爲。它每次都選擇最後一個元素,並且它不是最大的元素,但是它是最負面的。 – CodeSlapper

回答

3

它應該是max_element(),而不是max()

auto maxElem = *(std::max_element(testArray, testArray + elem));