Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am using Boost unordered_map. I have a key value pair for each entry. How could I determine whether a particular value exist in the map? (I don't want to create another unordered_map which stored the value as key and key as value)

Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
194 views
Welcome To Ask or Share your Answers For Others

1 Answer

How about the following:

typedef std::unordered_map<int,std::string> map_type;
typedef std::unordered_map<int,std::string>::value_type map_value_type;

map_type m;

if (m.end() != find_if(m.begin(),m.end(),[](const map_value_type& vt)
                                           { return vt.second == "abc"; }
                                           ))
   std::cout << "Value found." << std::end;
else
   std::cout << "Value NOT found." << std::end;

Or using an external variable that is captured:

std::string value = "abc";
if (m.end() != find_if(m.begin(),m.end(),[&value](const map_value_type& vt)
                                                 { return vt.second == value; }))
   std::cout << "Value found." << std::end;
else
   std::cout << "Value NOT found." << std::end;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...