我有map<string, set<string>>
,我有一个条目,flights["Madison"].insert("Boston");
现在,我想知道如何检查地图中是否有"Madison", "Boston"
条目。我无法想出一种方法来查找集合中密钥的值是否存在。
到目前为止,这是我的尝试:我觉得好像我已经走了一两行。
typedef map<string, set<string>> TFlights;
TFlights flights;
TFlights::iterator iter, iter2;
bool found = false;
flights["Madison"].insert("Boston");
flights["Madison"].insert("Miami");
for(iter = flights.begin(); iter != flights.end(); iter++)
{
if(iter->first == "Madison" && //iter->second contains "Boston" )
{
found = true;
}
}
return found;
答案 0 :(得分:3)
对地图使用map::iterator
和find()
功能。在地图中找到值后,会搜索set
:
bool found = false;
TFlights::iterator it = flights.find("Madison");
if ( it != flights.end())
{
// key exists in map. Now search the set
if (it->second.find("Boston") != it->second.end())
found = true;
}
return found;
答案 1 :(得分:0)
将评论替换为
iter-> second.find("Boston") != iter-> second.end()
答案 2 :(得分:-2)
map<string, set<string>>::iterator i;
bool found = (i = flights.find("Madison")) != flights.end()) && i->count("Boston");