C++ Vector给出了令人难以置信的意外价值

Cha*_*hmu 2 c++ windows vector codeblocks

我有这个代码:

std::vector <int> loc;
loc.push_back(cpx);
loc.push_back(cpy);
loc.push_back(play.GetSize().x);
loc.push_back(70);
std::cout<<loc[3];
Run Code Online (Sandbox Code Playgroud)

在我正在制作的游戏中,但即使我打印了loc [2]和loc [3]的值,它们与它们应该完全不同,当我运行此代码时,我得到loc [3]等于70070而不是70.有谁知道如何解决这个问题?

us2*_*012 9

您的代码中cout没有endl\n在某处您忘记删除的另一个.那个打印出来700,而70代码示例中最后一行的输出是正确的.

改变你的最后一行,std::cout<< " and loc[3] is: " << loc[3] << std::endl;看看我的狂野猜测是正确的,然后去寻找那个其他的cout.

  • 为你的心灵调试技能+1.@Roboinventor:`endl`在99%的时间内都是矫枉过正 - 请参阅[什么是C++ iostream endl惨败?](http://stackoverflow.com/q/5492380/636019). (3认同)
  • @Robo这可能不是一个正确的教训,从这一点开始 - 总是考虑`'\n'`和`std :: endl`取决于你是否想要立即刷新缓冲区. (2认同)