0

我想搜索成对的向量,为了这样做..我正在执行以下操作:

 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;
            }
        }

但是我的问题是……这样做后……我陷入了无限循环……谁能帮我解决问题

4

2 回答 2

0

我已经在键盘上测试了你的代码。在这里检查!它工作正常。j调试时检查变量的值。正如 SingerOftheFall 所说,它可能会在某处减少或重置。如果您在循环内添加增加值的元素,它也可以继续无限循环,vec_pairs.size()并且在这种情况下条件j != vec_pairs.size()永远不会为真。在您提供的代码中找不到任何错误。

于 2012-07-10T06:31:49.457 回答
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再次进入,等等。

于 2012-07-10T06:17:01.413 回答