检查是否在地图c ++中找到了一个键并获得了它

hak*_*ata -1 c++ map

我想检查是否在地图中找到某个键​​,如果是这样我想将它放在变量中以供其他用途,但问题是我不想使用迭代器.我在map类中找到了find函数,但它返回了一个迭代器,我想要检查是否在map中找到了一个键,如果它返回true则获取它

谢谢

hmj*_*mjd 6

std::map::count()如果地图包含特定密钥,将通知您.如果键在地图中,那么您可以使用operator[]获取值,知道不会添加默认值(尽管ildjarn指出需要两次搜索地图):

std::map<int, int> m;

m[0] = 1;
m[1] = 2;

if (m.count(0))
{
    std::cout << "value=" << m[0] << "\n";
}
Run Code Online (Sandbox Code Playgroud)

为什么find()没有吸引力,我不清楚:

std::map<int, int>::iterator i = m.find(0);
if (i != m.end())
{
    std::cout << "value=" << i->second << "\n";
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然这样可行,但是`count()`+`operator []`会导致双重查找,当有`find()`时,这在效率方面是愚蠢的.演示如何使用`find()`可以获得更好的答案. (4认同)