密钥存在于map变量中,但find找不到它

时间:2014-06-01 06:02:37

标签: c++

我创建了一个名为MyClass的类,并将地图定义为:

    map<string,myClass> myClassSample;

我插入了一个变量和键:

     myClassSample["id"].setString1_1("hi");

注意:setString1_1是类

的setter

然后我使用此代码查看密钥是否可用:

    if (myClassSample.find("id") != myClassSample.end())
    {
    printf("Problem");
    }

Problem显示为输出。所以条件是真的! 但该函数可以返回字符串!

return myClassSample["id"].getString1();

注意:getString1是类

的getter

1 个答案:

答案 0 :(得分:3)

您似乎对map::find的工作方式存在误解。当您搜索的密钥无法找到时,它会返回end()迭代器。因此,检查密钥是否存在的条件需要

if (myClassSample.find("id") == myClassSample.end())
//                           ^^   ==, not !=
{
  printf("Problem");
}