为什么这个for循环需要这么长时间?

时间:2011-11-23 14:50:02

标签: c++

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位系统。

我对整数&#39; i&#39;得到了非常奇怪的结果。调试时它应该初始化为0,但由于某种原因,它是一个非常高的数字,这反过来意味着for循环没有执行。

1 个答案:

答案 0 :(得分:6)

  

编辑 - 只是改变了它,它只是一个int,现在它得到一个值   -82938723047或某些此类号码。为什么发生这种情况呢?   它破坏了我的计划!

你几乎肯定会咆哮错误的树。代码:

for (int i = 0; 

...将i初始化为0,期间。如果你试图在调试器中监视它的值并且调试器说i的值看起来像未初始化的垃圾数据,那么你可能在{{1}之前或之后查看i已输入范围并已初始化。例如,在MSVC中,如果您在第一次进入循环之前检查i,它通常会有垃圾数据。

这些不是您正在寻找的机器人。继续前进。

此代码更有可能:

i

这可能不是你认为它正在做的事情。

顺便说一下,如果level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice].size() 的类型是某种类型的level.PathLookupVectors()[globalNodePositionIndex][globalNodeChoice],我宁愿您使用这样构造的vector循环。

for

如果您不需要您尝试访问的元素的索引,那么为什么要引用它?您只是在代码中引入了另一个潜在的失败点。