将multimap与String进行比较

时间:2014-02-20 15:31:01

标签: c++ multimap

我想将多图中的元素与字符串进行比较,例如:

struct value { 
string res;
time_t t;
};

string result; 

multimap<int, value> values
value new_value;  

if((values.find(new_value.res)) != result)    // code snipped
{
//... do something
}

谢谢!

2 个答案:

答案 0 :(得分:0)

您不能使用std::multimap::find功能,因为它只搜索密钥。

相反,您必须使用更通用的std::find_if函数和自定义谓词。像

这样的东西
std::find_if(std::begin(values), std::end(values),
    [&new_value](const std::pair<const int, value> &p)
    {
        return p.second == new_value.res;
    });

答案 1 :(得分:0)

您可以使用std::find和lambda表达式

auto it=std::find_if(values.begin(), values.end(), [&](const std::pair<int,value> &pair)
{
  return pair.second.res == new_value.res
});

if (it != values.end())
{
  // Found it
}

如果您无权访问C ++ 11,那么您可以循环访问它:

for(std::map<int,value>::iterator it=values.begin(); it!=values.end(); ++it)
{
  if( (*it).second.res == new_value.res)
  {
    // Found it,
    break;
  }
}