C++ For循环不断崩溃程序c++;
我的长得多的程序中的这段特定代码不断崩溃。它编译得很好,但windows结束了它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
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_namesout_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"));