来自我更长的程序的这一特定代码块不断崩溃。它编译得很好但是窗户结束了它。
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();
我想弄清楚它为什么会一直崩溃。我不是要求复制代码。谢谢。
答案 0 :(得分:5)
很少的信息。但是第一件事就是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;
答案 1 :(得分:2)
我建议通过使用以下顺序避免这类问题:
std::copy(a.rbegin(), a.rend(),
std::ostream_iterator<a::value_type>(out_stream_names, "\n"));
作为奖励,在这种情况下,您可能也会获得一些性能提升(将endl
替换为\n
,避免在您编写的每个名称之间刷新流。)< / p>
[请注意,a::value_type
不会按原样编译 - 您需要指定实际类型]。
答案 2 :(得分:1)
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();
??试试吧!