例如:
代码1:
if((iter = map.find(key)) != map.end()) {
return iter->second;
}
return 0;
code2:
if(map.count(key) > 0) {
return map.at(key);
}
return 0;
code2更简单,但是map.count()
和map.at()
都需要花费O(logn)的时间。是否std::map
提供了缓存上次搜索结果并且使得同样的搜索更快的功能,还是只是在整个映射中进行第二次搜索?
if
语句中有一个赋值操作。 赋值操作会改变状态。 - James Kanze