我更长的程序中的这段特定代码不断崩溃。它编译得很好,但是 Windows 结束了它。
out_stream_names.open("names.dat");
for(int i = a.size(); i>0 ; i=i-1)
{
out_stream_names << a[i] << endl;
}
out_stream_names.close();
我想弄清楚为什么它总是崩溃。我不是要求复制代码。谢谢。
我更长的程序中的这段特定代码不断崩溃。它编译得很好,但是 Windows 结束了它。
out_stream_names.open("names.dat");
for(int i = a.size(); i>0 ; i=i-1)
{
out_stream_names << a[i] << endl;
}
out_stream_names.close();
我想弄清楚为什么它总是崩溃。我不是要求复制代码。谢谢。
信息很少。但首先引起轰动的是a.size()
尝试:
out_stream_names.open("names.dat");
for(int i = a.size()-1; i>=0 ; i=i-1)
{
out_stream_names << a[i] << endl;
}
out_stream_names.close();
由于您只想在偶数索引中输出,在我们遍历的情况下是奇数索引,请使用:
if(i&1) out_stream_names << a[i] << endl;
我建议通过使用以下顺序来避免此类问题:
std::copy(a.rbegin(), a.rend(),
std::ostream_iterator<a::value_type>(out_stream_names, "\n"));
作为奖励,在这种情况下,您可能还会获得一些性能提升(通过替换endl
为\n
,避免在您编写的每个名称之间刷新流)。
[请注意,它a::value_type
不会按原样编译——您需要指定实际类型]。
out_stream_names.open("names.dat");
for(int i = a.size() - 1; i >= 0; --i)
{
out_stream_names << a[i] << endl;
}
out_stream_names.close();
?? 试试看!