gpt4 book ai didi

c++ - 如何从返回类型为pair的C++函数返回等效的nullptr?

转载 作者:行者123 更新时间:2023-12-01 15:12:33 24 4
gpt4 key购买 nike

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,有哪些替代方法?

最佳答案

使用optional<T>类型表示潜在的不存在状态。
如果您使用的是C++ 17,则可以使用std::optional<T>来完成,如果使用Boost则可以使用boost::optional<T>来完成,等等。您甚至可以实现自己的optional版本。关键是使用一种语义类型,该语义类型指示可能存在或可能不存在值。
使用C++ 17中的std::optional,您的代码将变为:

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

尽管您可以通过返回类似哨兵的值(例如一对 (-1, -1))来解决此问题,但不建议这样做。这会强制检查调用方上的特定哨兵值,很容易将其遗漏或遗忘-并可能导致不良哨兵值进入其他算术或间接可能永远不会期望负值的间接方式。
使用语义类型来传达可空性有助于防止这些类型的错误。

关于c++ - 如何从返回类型为pair的C++函数返回等效的nullptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63035954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com