我有一个map<string, set<string>>,我只有一个条目,即flights["Madison"].insert("Boston");
现在,我想知道如何检查 map 中是否存在"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;

最佳答案

对 map 使用map::iteratorfind()函数。一旦在 map 上找到该值,就搜索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;

关于c++ - 字符串映射,设置。比较值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27352230/

10-11 15:55