我经常在我使用的一些代码库中发现这种模式:
std::map<std::string, std::string> mymap;
...
if (mymap.find(key) != mymap.end())
{
return mymap[key];
}
我知道这个可以用
std::map<std::string, std::string> mymap;
...
auto it = mymap.find(key)
if (it != mymap.end())
{
return it->second;
}
但我想知道,在实践中,第一个版本是否会得到优化,无论如何不会搜索两次?
1条答案
按热度按时间46qrfjad1#
不,它不会被优化。模式级别太高。
你可以选择这样做:
您可以查看以下基准:
性能指标评测:https://quick-bench.com/q/7mFWe8jlXD7J9GTDMNSiZdcGCgY