迭代向量时陷入无限循环的问题
Issues of getting stuck into infinite loop while iterating through vectors
我想搜索一个成对的向量,为了做到这一点,我正在做以下操作:
vector<pair<double ,double> > vec_pairs;
for(vector<unsigned int>::size_type j = 0; j != vec_pairs.size(); j++ )
{
if(vec_pairs[j].first==12.6)
{
int z=7;
continue;
}
}
然而,我的问题是…在这样做的时候。。。我陷入了一个无限循环。。。有人能帮我解决这个问题吗?
首先,您发布的代码"照原样"运行良好。
这种类型的代码进入无限循环的唯一原因是在循环中修改j
。
如果您在循环中增加j
,您可能不会陷入困境,因为您将失去绑定,并可能导致代码崩溃。
for(vector<unsigned int>::size_type j = 0; j != vec_pairs.size(); j++ )
{
if(vec_pairs[j].first==12.6)
{
j++;//You will go out of vector bonds and might get an error here.
continue;
}
}
然而,如果你这样做:
for(vector<unsigned int>::size_type j = 0; j != vec_pairs.size(); j++ )
{
if(vec_pairs[j].first==12.6)
{
j--;//j is decreased each time you get in here, so you will be stuck on one element,
continue;
}
}
然后你会被困在里面,因为当你进入if
语句(比如说,在元素7上)时,j
将减少到6,然后你将continue
循环,j
将增加回7,你将再次进入if
,依此类推
我已经在codepad中测试了您的代码。在这里查看!它运行良好。调试时请检查变量j
的值。正如足球歌手所说,它可能在某个地方被减少或重置。如果你在循环中添加元素,增加vec_pairs.size()
的值,并且条件j != vec_pairs.size()
在这种情况下永远不会成立,那么它也可以进行无限循环。在你给出的代码中找不到任何错误。
相关文章:
- 过载'operator new'如何导致无限循环?
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 遍历链表时的无限循环
- 循环链表:无限循环
- 比较两个字符串后卡在无限循环中
- 在做一段时间内检查字符的无限循环
- 运行无限循环的最小二叉树问题
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- 陷入无限循环(骑士巡回赛问题)
- 我在C 初学者中发现了无限的循环问题
- 冰雹序列C 函数需要计算序列的长度.无限循环问题
- 如何修复关卡顺序遍历问题(二叉树)的无限循环错误
- C++无限循环问题
- 迭代向量时陷入无限循环的问题
- C++ 无限循环,返回问题
- 从文件读取导致无限循环的问题
- 无限循环的问题
- c++中关于无限循环的问题
- 无限循环的问题