for循环:
//for testing, this is usually a value of about 27 int test = level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size(); for (int i = 0; i < level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size(); i++) { //adds the correct nodes to the search search.push_back(level.Nodes()[level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice][i]].Index()); }
它是一个64位系统.
我在调试时得到整数'i'的非常奇怪的结果.它应该初始化为0,但由于某种原因,它是一个非常高的数字,这反过来意味着for循环没有执行.
编辑 - 只是更改它,以便它只是一个int,现在它获得值-82938723047或一些这样的数字.为什么发生这种情况呢?它破坏了我的计划!
你几乎肯定会吠叫错误的树.代码:
for (int i = 0;
...初始化i
为0
,期间.如果你想在调试器来监视其价值和调试器说i
有,看起来像未初始化,垃圾数据的值,那么你可能在看i
之前或之后i
已进入范围和被初始化.例如,在MSVC中,如果i
在第一次进入循环之前检查,它通常会有垃圾数据.
这些不是您正在寻找的机器人.向前走.
这个代码更有可能是:
level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size()
这可能不是你认为它正在做的事情.
顺便说一句,如果类型level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice]
是vector
某种类型,我宁愿你使用这样for
构造的循环.
/*psudocode*/ for( vector::iterator it = v.begin(), it_end = v.end(); it != it_end; ++it )
如果您不需要您尝试访问的元素的索引,那么为什么要引用它?您只是在代码中引入了另一个潜在的失败点.