在我的函数中,我有这个参数:
map<string,int> *&itemList
我想首先检查一个密钥是否存在。如果此键存在,则获取该值。 我想这个:
map<string,int>::const_iterator it = itemList->find(buf.c_str());
if(it!=itemList->end())
//how can I get the value corresponding to the key?
是检查密钥是否存在的正确方法?
答案 0 :(得分:6)
是的,这是正确的方法。与密钥关联的值存储在second
迭代器的std::map
成员中。
map<string,int>::const_iterator it = itemList->find(buf.c_str());
if(it!=itemList->end())
{
return it->second; // do something with value corresponding to the key
}
答案 1 :(得分:1)
无需遍历所有项目,只需访问具有指定密钥的项目即可。
if ( itemList->find(key) != itemList->end() )
{
//key is present
return *itemList[key]; //return value
}
else
{
//key not present
}
编辑:
之前的版本会两次查找地图。更好的解决方案是:
map::iterator<T> it = itemList->find(key);
if ( it != itemList->end() )
{
//key is present
return *it; //return value
}
else
{
//key not present
}