C++ 试图取消对迭代器的引用时出现的分段错误

C++ 试图取消对迭代器的引用时出现的分段错误,c++,c++11,C++,C++11,我试图使用std::max\u元素来找到向量的最大值。当我运行这个程序时,我得到了一个分段错误,我相信这与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);

我试图使用std::max\u元素来找到向量的最大值。当我运行这个程序时,我得到了一个分段错误,我相信这与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;
auto max=std::max_元素(std::begin(tempdata),std::end(tempdata));
std::ofstreammaxcurrent(“maxcurrent.txt”,std::ios::app);

max
std::end(tempdata)
时,maxcurrent将不起作用,如果
tempdata
为空,则会出现这种情况

范围[first,last]中最大元素的迭代器。如果范围中的多个元素等效于最大元素,则将迭代器返回给第一个此类元素。如果范围为空,则返回last


max
std::end(tempdata)
时,它将不起作用,如果
tempdata
为空,则会发生这种情况

范围[first,last]中最大元素的迭代器。如果范围中的多个元素等效于最大元素,则将迭代器返回给第一个此类元素。如果范围为空,则返回last


哪一行出现故障?
std::max_元素()
调用(如问题文本所示)或
*max
取消引用(如问题标题所示)?且
tempdata
是否为非空?是否在空向量上搜索max元素?@Angew是*max行进行分段故障。哪行分段故障?
std::max_元素()
调用(如问题文本所示)或
*max
取消引用(如问题标题所示)?并且是
tempdata
nonempty吗?您正在搜索空向量上的max元素吗?@Angew是*max行出错。我发现数据没有正确写入tempdata,现在已修复。谢谢。我发现数据没有正确写入tempdata,现在已修复。谢谢。