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