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

时间:2014-01-15 12:28:54

标签: 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;

看了this answer我不明白为什么我的工作不起作用。

1 个答案:

答案 0 :(得分:5)

max std::end(tempdata) tempdata如果您的{{1}}为空,则无效。

  

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

source