如果 accountNo
没有找到 map
,我试图返回 null 。
但是我过去只在 java 中使用过链表。
我不知道如何在 C++ map 中返回其他东西。
113 Account Bank::BalanceEnquiry(long accountNo){
114 map<long, Account>::iterator itr = accounts.find(accountNo);
115 return itr->second;
116 }
有人可以帮忙吗? 最佳答案
您可以使用 std::optional
,它是一个可能包含也可能不包含值的包装器:
std::optional<Account> Bank::BalanceEnquiry(long accountNo){
auto itr = accounts.find(accountNo);
if(itr == accounts.end()) {
return std::nullopt; // empty value, that's like null from Java
}
return std::optional<Account>{itr->second}; // return non-empty value
}
它可以像这样使用(使用 Bank
-object myBank
):std::optional<Account> balanceEnquiry = myBank.BalanceEnquiry(someValue);
if(balanceEnquiry) {
// entry found, we can extract the actual value
Account foundAccount = balanceEnquiry.value();
}
else {
// entry not found
}
关于c++ - 如何在 map 中返回空值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62768734/