gpt4 book ai didi

c++ - map /unordered_map : Prefer find() and then at() or try at() catch out_of_range?

转载 作者:IT老高 更新时间:2023-10-28 22:58:53 26 4
gpt4 key购买 nike

当使用 std::mapstd::unordered_map 时,访问可能不在容器中的元素的最佳方法是什么?应该请求许可还是请求宽恕?为什么?

也就是说,

if (mymap.find(key) != mymap.end()) {
value = mymap.at(key);
// do stuff
}
else {
// do something else
}

对比

try {
value = mymap.at(key);
// do stuff
}
catch(const std::out_of_range& oor) {
// do something else
}

最佳答案

我建议使用 secret 选项 C,它可以避免非异常异常并进行两次搜索:

MyMapType::const_iterator iter = mymap.find(key);

if(iter != mymap.end())
{
// iter is item pair in the map. The value will be accessible as `iter->second`.
}

在 C++ 中,将异常处理用于流控制并不习惯,这正是第二个代码示例所做的。这将使维护人员更难理解代码,并且根据特定的编译器,它可能无法正常运行。

关于c++ - map /unordered_map : Prefer find() and then at() or try at() catch out_of_range?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144887/

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