【发布时间】:2020-07-22 13:57:46
【问题描述】:
pair<int, int> findEmpty(int bo[9][9], int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(bo[i][j]==0){
return (make_pair(i, j));
}
}
}
//return nullptr;
}
如果nullptr不能返回,有什么办法?
【问题讨论】:
-
您可以返回一对表示它为空的两个数字。如果你想返回 null,你可以让函数返回一对指针。
-
return {};可能是一个解决方案 -
替代方案取决于您想要的语义。这是一个错误吗?也许
throw。这是一个“不可能”的价值吗?也许make_pair(-1, -1)。它是程序可以在没有的情况下工作的可选值吗?std::optional<std::pair<int,int>>。第二个选项有时也用来代替第三个。 -
你说你的函数返回两个整数。因此,您必须返回两个整数,或者更改它以使返回类型不是两个整数。也许试试 optional
> -
您的代码在循环中返回的唯一方法是一对值都为零或更大的值。任何一个具有负值的对都可以被认为是空的,例如
make_pair(-1, -1)。您可能还希望在进入循环之前返回 ifn > 8。