c++ - 如何在 map 中返回空值?

标签 c++

如果 accountNo,我试图返回 null没有找到 map .
但是我过去只在 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/

相关文章:

c++ - 将指针传递给 vector 是否比 vector 本身更快?

c++ - 在 C 中清洁屏幕

c++ - DirectX11 - 带流输出的几何着色器

c++ - Objective-C 中的多态性 - iOS

c++ - 如何在 omnet++ 中发送自定义数据包?

c++ - 如何在 Qt 中制作一个自动滚动的文本框?

c++ - 在 C++ 中继承同一个类两次(故意)

c++ - 何时将库包含在 target_link_libraries 中

c++ - 指针大小和传递引用与传递指针

c++ - 奇怪的线程问题