我想将多图中的元素与字符串进行比较,例如:
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
}
谢谢!
答案 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;
}
}