我有一个 map
名为 valueMap
如下:
typedef std::map<std::string, std::string>MAP;
MAP valueMap;
...
// Entering data.
然后我通过引用将此映射传递给函数:
void function(const MAP &map)
{
std::string value = map["string"];
// By doing so I am getting an error.
}
如何从映射中获取值,该值作为对函数的引用传递?
原文由 Aneesh Narayanan 发布,翻译遵循 CC BY-SA 4.0 许可协议
std::map::operator[]
是一个非常量成员函数,并且您有一个 const 引用。您要么需要更改
function
的签名,要么执行以下操作:operator[]
通过向映射添加默认构造值并返回对它的引用来处理错误。当您只有一个 const 引用时,这是没有用的,因此您需要做一些不同的事情。如果您的程序逻辑以某种方式保证
"string"
已经是关键,您 可以 忽略这种可能性并编写string value = map.find("string")->second;
。明显的问题是,如果你错了,那么你会得到未定义的行为。