我想知道这是我的错误/误解(很可能)还是其他原因。
我在 VS 2017 社区中有以下代码:
#include <map>
int main()
{
std::map<int, int> myMap{};
myMap[1] = 4;
myMap[4] = 2;
return 0;
}
现在当我调试时,我想尝试观察我得到的 map 的某些条目
myMap[1] no operator "[]" matches these operands
为什么会这样?我不确定。
最佳答案
调试器将 myMap
视为 const
。这是为了阻止你改变状态来观察它。
[]
的两个重载是
T& operator[]( const Key& key );
T& operator[]( Key&& key );
它们都不能在 const map
上调用,因为如果 key
不存在,它们会插入一个默认构造的条目以返回。
您可以改为使用 at
,如果 key
不存在,它会抛出异常,因此有一个 const
限定的重载
const T& at( const Key& key ) const;
关于c++ - 在 VS 调试器中查看映射条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073277/