作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个名为valueMap
的map
如下:
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.
}
如何从映射中获取值,该值作为对函数的引用传递?
最佳答案
std::map::operator[]
是一个非常量成员函数,并且你有一个 const 引用。
您要么需要更改 function
的签名,要么:
MAP::const_iterator pos = map.find("string");
if (pos == map.end()) {
//handle the error
} else {
std::string value = pos->second;
...
}
operator[]
通过向映射添加默认构造值并返回对它的引用来处理错误。当你只有一个 const 引用时,这是没有用的,所以你需要做一些不同的事情。
你可以忽略这种可能性并写string value = map.find("string")->second;
,如果你的程序逻辑以某种方式保证 "string"
已经是一个键。明显的问题是,如果你错了,你就会得到未定义的行为。
关于c++ - 如何从 map 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699689/
我是一名优秀的程序员,十分优秀!