Hi,
The current boost::associative_property_map interface in boost::property_map does not provide a find() function interface from where we can find a key type from associative map.
Although the associative property map concept was mainly developed for using boost::get and boost::put function efficiently on unique associative containers (such as std::map), it still does not have any interface for using find() function for searching whether an element exists in a map, My problem is explained below:
I have a map, and I define a associative property map on it. as follows:
std::map< int, int > mymap;
boost::associative_property_map< std::map< int, int > > my_asso_map ( mymap );
I have a template function, named " exists_in " which checks whether a particular key_value, is present in the map or not. The function is as follows:
template <typename map_t, typename key_t>
bool exists_in(map_t map, key_t key)
{
return map.find(key) != map.end();
}
========================================
If I call this template function on mymap, it gives me no error: if( !exists_in ( mymap, key ) ----> no error
Now, if I call template function on my_asso_map, it throws an error : if( !exists_in( my_asso_map, key ) ---->> error
error: âclass boost::associative_property_map<std::map<int, int > >â has no member named âendâ
error: âclass boost::associative_property_map<std::map<int, int > >â has no member named âfindâ
I understand, my_asso_map just stores the address of mymap and provides get and put efficiently. But there are instances, where I have to search a key in my map. ( for example, if else loop as provided above ).
I want to hide mymap and just expose my_asso_map to the user and everywhere I want to pass my_asso_map.. I am able to do this except for the find() function, because of which I had to keep passing my original mymap to the function/ functor and then use exists_in template function.
Is there any way to implement a find() utility for associative property maps ? If find() interface can be added in library, that would be simply great !
Thanks,
--
Thanks and regards,
Aniket Pugaonkar