我有一张地图存储“作业”作为关键字,“名称”作为存储的值。
map<string, string>dutyAndJob;
map<string,string>::iterator it;
我基本上试图通过这张地图查看特定的“名称”。 如果名称不存在,则不应该进入此循环,但是,由于某些未知原因,它总是进入此循环:
string name = "Bob";
it = dutyAndJob.find(name);
if (it == dutyAndJob.end())
{
cout << "Testing : " << name << endl;
}
由于某种原因,即使地图中没有存储Bob,它仍会进入此循环。
非常感谢任何帮助!
答案 0 :(得分:4)
if (it == dutyAndJob.end())
{
cout << "Testing : " << name << endl;
}
应该是:
if (it != dutyAndJob.end()) // Does it refer to a valid association
{
cout << "Testing : " << name << endl;
}
请注意从==
到!=
的更改,表示该密钥已在地图中找到。如果密钥不,则迭代器it
仅等于dutyAndJob.end()
。
答案 1 :(得分:0)
刚刚意识到Job是关键,而Name是数据。您具有结构化的方式,您只能在将检索名称的作业上使用find。
string job = "Cashier";
it = dutyAndJob.find(job);
if (it == dutyAndJob.end())
{
cout << "Testing : " << job<< endl;
}
如果您确实想按名称搜索,可能名称应该是键,而作业应该是数据?