I have a map named valueMap as follows:
typedef std::map<std::string, std::string>MAP;
MAP valueMap;
...
// Entering data.
Then I am passing this map to a function by reference:
void function(const MAP &map)
{
std::string value = map["string"];
// By doing so I am getting an error.
}
How can I get the value from the map, which is passed as a reference to a function?
std::map::operator[]is a non-const member function, and you have a const reference.You either need to change the signature of
functionor do:operator[]handles the error by adding a default-constructed value to the map and returning a reference to it. This is no use when all you have is a const reference, so you will need to do something different.You could ignore the possibility and write
string value = map.find("string")->second;, if your program logic somehow guarantees that"string"is already a key. The obvious problem is that if you’re wrong then you get undefined behavior.