我正在尝试编写一个函数,当键不在 std::map 内时,它将给我一个默认值。在所有情况下,我的默认值都是 numeric_limit::infinity()。\n但是这个简单的示例不起作用。
\n#include <iostream>\n#include <map>\n#include <limits>\n\ntemplate<typename KeyType, typename ValueType>\nValueType mapDefaultInf(const std::map<KeyType, ValueType> & map, const KeyType & key)\n{\n if(!map.contains(key))\n {\n return std::numeric_limits<ValueType>::infinity();\n }\n else\n {\n return map[key];\n }\n}\n\nint main()\n{\n std::map<std::string, int> map;\n auto el = mapDefaultInf(map, "alexey");\n std::cout << el << std::endl;\n\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n错误是:
\nmain.cpp:29:42: error: no matching function for call to \xe2\x80\x98mapDefaultInf(std::map, int>&, const char [7])\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n有人可以帮我理解这个错误吗?
\n提前致谢。
\n有人可以解释一下_IO_stdin_used下面这一行的内容吗:
114a: 48 8d 3d b3 0e 00 00 lea rdi,[rip+0xeb3] # 2004 <_IO_stdin_used+0x4>
Run Code Online (Sandbox Code Playgroud)
抱歉这个菜鸟问题。