我正在尝试使用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我不明白为什么我的工作不起作用。
答案 0 :(得分:5)
max
std::end(tempdata)
tempdata
如果您的{{1}}为空,则无效。
迭代到范围中最大的元素[first,last)。如果范围中的多个元素等同于最大元素,则将迭代器返回到第一个这样的元素。如果范围为空,则返回最后一个。