这是执行此操作的正确方法:
int p1, p2; //must be declared outside loop, otherwise they get deleted when it ends.
for(p1 = 0; p1 < 9; p1++)
for(p2 = 0; p2 < 9; p2++)
if(g[p1][p2] == -2) goto doneSearching;
doneSearching:
所有你goto
讨厌的人现在都可以抱怨你永远不应该使用goto
. 你还是错了。像这样的情况是该语言存在的原因之一,在goto
这里使用它们是完全可以接受的。
如果您仍然坚决认为永远不能使用 a goto
,则可以将其伪装成 a return
,将其移至单独的函数中,如下所示:
template<typename E>
Pair<int, int> search(E[][] array, E target){
for(int p1 = 0; p1 < sizeof(array)/sizeof(*array); p1++)
for(int p2 = 0; p2 < sizeof(array[p1])/sizeof(*array[p1]); p2++)
if(target == array[p1][p2]) return Pair<int, int>(p1,p2);
}