C++ 为什么这个循环要花这么长时间?
for循环:C++ 为什么这个循环要花这么长时间?,c++,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++
//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());
}
//对于测试,该值通常为27左右
int test=level.PathLookupVectors()[globalNodePositionIndex][GlobalNodeEchoice].size();
对于(int i=0;i
这是一个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][globalNodeEchoice]
的类型是某种向量
,我希望您对这样构造的循环使用
/*psudocode*/ for( vector::iterator it = v.begin(), it_end = v.end(); it != it_end; ++it )
如果您不需要尝试访问的元素的索引,那么为什么要引用它呢?您只是在代码中引入了另一个潜在的失败点。不要向我们展示循环“本质上”是什么——而是向我们展示实际的代码。实际上,它是一个vector::size\u类型。
。请注意,显示实际的代码可能包含太多的无关信息。我们需要的是一个完整、简洁的示例来重现问题。您更新的代码仍然没有显示问题。为什么测试相关?为什么你觉得i
不好?@SirYakalot:你不能多次接近投票。我们无能为力。正如你所展示的,这个循环不是有缺陷的w.r.t.i
问题。我有兴趣帮忙,但我不能;这是不可能的。所以你必须帮助我们,这样我们才能更好地帮助你。