尝试取消引用迭代器的分段错误

oxi*_*ing 0 c++ c++11

我正在尝试使用std :: max_element找到向量的最大值.当我运行程序时,我得到一个分段错误,我认为这与std :: end越过向量的末尾有关吗?我已经尝试将其更改为std :: end(tempdata)-1)但无济于事.

    auto max = std::max_element(std::begin(tempdata), std::end(tempdata));
    std::ofstream maxcurrent("maxcurrent.txt", std::ios::app);
    maxcurrent << v << std::setw(15) << *max << std::endl;
Run Code Online (Sandbox Code Playgroud)

看了这个答案,我不明白为什么我的工作不起作用.

Joh*_*han 5

当它不会工作maxstd::end(tempdata),如果您的发生可以tempdata是空的.

迭代器到范围内的最大元素[first,last).如果范围中的多个元素等同于最大元素,则将迭代器返回到第一个这样的元素.如果范围为空,则返回最后一个.

资源