For循环使程序c++不断崩溃

For loop keeps crashing program c++

本文关键字:崩溃 c++ 程序 循环 For      更新时间:2023-10-16

我的较长程序中的这段特定代码不断崩溃。它编译得很好,但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();

试试看!