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

Is it slower to access std::map elements with at() than operator[]?

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

std::map::atstd::map::operator[] 都检查密钥是否存在。前者未找到时抛出异常,后者创建默认值。

它们的复杂度必须是 log(n)(查找)。 性能本身不一定要相同,但在实践中应该相似。

所以从他们的行为中选择一个使用(在查找之后)。类似的替代方案可能是 map::find 或在某些情况下 map::insert/insert_or_assign/emplace.