for循环不断崩溃程序c ++

时间:2013-02-26 03:18:17

标签: c++

来自我更长的程序的这一特定代码块不断崩溃。它编译得很好但是窗户结束了它。

 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();

我想弄清楚它为什么会一直崩溃。我不是要求复制代码。谢谢。

3 个答案:

答案 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();

??试试吧!