Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Checking value exist in a std::map - C++

I know find method finds the supplied key in std::map and return an iterator to the element. Is there anyway to find the value and get an iterator to the element? What I need to do is to check specified value exist in std::map. I have done this by looping all items in the map and comparing. But I wanted to know is there any better approach for this.

Here is what I have wrote

bool ContainsValue(Type_ value) {     bool found = false;     Map_::iterator it = internalMap.begin(); // internalMap is std::map     while(it != internalMap.end())     {         found = (it->second == value);         if(found)             break;         ++it;     }     return found; } 

Edit

How about using another map internally which stores value,key combination. So I can call find on it? Is find() in std::map doing sequential search?

Thanks

like image 548
Navaneeth K N Avatar asked Feb 11 '09 03:02

Navaneeth K N


1 Answers

You can use boost::multi_index to create a bidirectional map - you can use either value of the pair as a key to do a quick lookup.

like image 114
Mark Ransom Avatar answered Sep 19 '22 12:09

Mark Ransom