访问常量映射中的元素:运算符[]与at()
使用常量映射时,使用运算符[访问元素] 可能会失败。然而,使用 at() 是一个可行的替代方案。为什么会出现这种情况?
在非常量映射中,operator[] 执行两个功能:
但是,在 const 映射中,operator[] 不允许修改底层数据结构。因此,它只能执行第一个函数,并在尝试使用第二个函数插入新元素时抛出错误。
相反,at() 是 C 11 中引入的一种方法,专门用于访问 a 中的元素。常量映射。它提供了几个好处:
出于这些原因,at() 是访问元素的推荐方法一个 const std::map。示例代码:
#include <iostream> #include <map> int main() { std::map<int, char> A; A[1] = 'b'; A[3] = 'c'; const std::map<int, char>& B = A; std::cout << B.at(3) << std::endl; // it works std::cout << B[3] << std::endl; // it does not work }
将输出:
c error: can't access elements with operator[] in a const std::map
以上是常量映射访问:为什么使用 `at()` 而不是 `operator[]`?的详细内容。更多信息请关注PHP中文网其他相关文章!