当我想从std::map
中获取某些元素时,据我所知,at()
会进行边界检查。这是否意味着它比[]
慢?
std::map::at
和std::map::operator[]
都检查密钥是否存在。前者在找不到时引发异常,后创建默认值。
它们的复杂性是必须log(n)
(查找(的。 性能本身并不强制要求相同,但在实践中应该是相似的。
因此,从他们的行为中选择要使用的一个(查找后(。类似的替代方案可能是map::find
的,或者在某些情况下map::insert
/insert_or_assign
/emplace
。