我想搜索成对的向量,以便这样做..我正在做以下事情:
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;
}
}
然而我的问题是......在这样做......我陷入了无限循环...... 任何人都可以帮我解决问题
答案 0 :(得分:0)
首先,您发布的代码运行良好'原样'。
这种类型的代码进入无限循环的唯一原因是修改循环内的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
,依此类推。
答案 1 :(得分:0)
我在codepad中测试了你的代码。检查一下here!它工作正常。调试时检查变量j
的值。正如SingerOftheFall所说,它可能会在某处减少或重置。如果在循环内添加元素会增加vec_pairs.size()
的值,并且条件j != vec_pairs.size()
在这种情况下永远不会为真,那么它也可以进行无限循环。在您给出的代码中找不到任何错误。