如何打破内循环但循环仍然增加

时间:2015-10-15 21:50:08

标签: c++ loops

for (int j=1; j<path.size(); j++) {
    //do something
    for (int z=0; z<path.size(); z++) {
        //do something
    }
    break;
}

内部循环可以从0循环直到它到达路径大小的末尾,但外部循环只是继续给我j=1而不是像inter循环那样进行增量。

两个循环如何同时进行增量?我试图删除break;z循环到path.size()次。

3 个答案:

答案 0 :(得分:2)

尝试使用和不使用break

运行此测试程序
for (int j=1; j<5; j++) {
    printf("j=%d\n",j);
    for (int z=0; z<5; z++) {
        printf("z=%d\n",z);
    }
    break; // next time try to remove this break
}

你可能会受到启发。

如果你想要j和z并行计数,你可能想要这样的东西

for (int j=1, z= 1; j<5; j++, z++) {
    printf("j=%d\n",j);
    printf("z=%d\n",z);
}

答案 1 :(得分:2)

内循环完全针对外循环的每次迭代执行,这就是为什么你看到z循环path.size()次。在此之后,由于break,循环停止,因此它不会再次在外循环上迭代。因此,即使外循环的条件仍然正确,它也不会检查它,因为你正在打破循环。

答案 2 :(得分:1)

for(int j = 1 ; j < path.size() ; j++){
   do something
   for (int z = 0 ; z < j ; z++){
       do something
   }

我认为这就是你正在寻找的东西