如果 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/

10-13 08:35