c++ 使用at()访问std::map元素是否比operator[]慢?

ivqmmu1c  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(131)

当我想从std::map中获取某个元素时,据我所知at()会进行边界检查。这是否意味着它比[]慢?

2guxujil

2guxujil1#

std::map::atstd::map::operator[]都检查键的存在。前者在没有找到时抛出异常,后者创建默认值。
它们的复杂度必须是log(n)(查找)。性能本身并不必须相同,但在实践中应该相似。
因此,从它们的行为中选择要使用的一个(在查找之后)。类似的替代方案可能是map::find,或者在某些情况下是map::insert/insert_or_assign/emplace

相关问题