当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么这个for循环需要这么长时间?》经验,为你挑选了1个好方法。

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循环没有执行.



1> John Dibling..:

编辑 - 只是更改它,以便它只是一个int,现在它获得值-82938723047或一些这样的数字.为什么发生这种情况呢?它破坏了我的计划!

你几乎肯定会吠叫错误的树.代码:

for (int i = 0; 

...初始化i0,期间.如果你想在调试器来监视其价值和调试器说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 )

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

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有