c++ - 在 VS 调试器中查看映射条目

标签 c++ visual-studio debugging

我想知道这是我的错误/误解(很可能)还是其他原因。

我在 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/

相关文章:

c++ - 循环中的 cin 函数出现问题

.net - 如何强制 app.config 成为 exe.config

c++ - VS2013 调试器无法再解析包含源代码路径的系统环境变量

visual-studio - 将大型存储库拆分为多个子存储库并保留历史记录 (Mercurial)

c# - CA1063 修改 Dispose() 使其调用 Dispose(true),然后在当前对象实例上调用 GC.SuppressFinalize,然后返回

debugging - 如何在 WebStorm 中调试服务器端 TypeScript 代码

C8051f312微 Controller

c++ - 将 WinMain(或 wWinMain)参数传递给普通的 main

c++ - Boost协程断言失败

c++ - 为什么在调用函数时要多一层间接寻址?