2016-12-04 2 views
0

Я пытаюсь использовать библиотеки StD как можно больше, и у меня есть вопрос с станд :: максстанд :: макс с динамическим массивом

#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)); 
Смежные вопросы