Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ For循环不断崩溃程序c++;_C++ - Fatal编程技术网

C++ For循环不断崩溃程序c++;

C++ For循环不断崩溃程序c++;,c++,C++,我的长得多的程序中的这段特定代码不断崩溃。它编译得很好,但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(); out_stream_names.open(“names

我的长得多的程序中的这段特定代码不断崩溃。它编译得很好,但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();
out_stream_names.open(“names.dat”);
对于(int i=a.size();i>0;i=i-1)
{

out\u stream\u names信息很少。但首先映入眼帘的是
a.size()

尝试:

out_stream_names.open(“names.dat”);
对于(int i=a.size()-1;i>=0;i=i-1)
{
out_stream_names
out_stream_names.open(“names.dat”);
对于(int i=a.size()-1;i>=0;--i)
{

out_stream_names我建议通过使用以下命令来避免此类问题:

std::copy(a.rbegin(), a.rend(), 
          std::ostream_iterator<a::value_type>(out_stream_names, "\n"));
复制(a.rbegin(),a.rend(), std::ostream_迭代器(out_-stream_名称,“\n”);
作为奖励,在这种情况下,您可能也会获得一些性能提升(将
endl
替换为
\n
,避免刷新您编写的每个名称之间的流)


[请注意,
a::value\u type
不会按原样编译--您需要指定实际的类型]。

a[a.size()]
最有可能是出界的,除非有一些奇怪的重载发生,就像
std::map
中的情况一样。这有什么区别吗?在
i>0
处以1减去1还应该包括
0
(缺少
a[0]
)看起来像是这样,他从
a.size()
0
(这意味着他想要所有的字符)所以我认为OP想要
0th
元素too@Aniket没错,在a.size()元素之前,我需要第0个元素。@user22507更新了答案。啊@user22507我猜是soThanks Jerry Coffin!但是,我可以使用的语法有限。
if(i&1) out_stream_names << a[i] << endl;
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();
std::copy(a.rbegin(), a.rend(), 
          std::ostream_iterator<a::value_type>(out_stream_names, "\n"));