字符串映射,设置。比较价值

时间:2014-12-08 05:57:37

标签: c++ map set

我有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;

3 个答案:

答案 0 :(得分:3)

对地图使用map::iteratorfind()功能。在地图中找到值后,会搜索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");