Re: how to use CComVariant data type as key in hash_map?
"thinktwice" <memorialday@gmail.com> wrote in message
news:1163563361.304253.192110@e3g2000cwe.googlegroups.com
stdext::hash_map<CComVariant, long> _map;
std::pair<CComVariant, long> _pair;
_map.insert(_pair);//can't compile , can't convert CComVariant to
_size_t.
You need to write a suitable hash_compare class - one that would provide
comparison and hash function for variants. None is predefined, you need
to roll your own. Something like this:
struct variant_hash_compare :
public stdext::hash_compare<CComVariant> {
size_t operator( )( const CComVariant& ?ey ) const {
// Calculate and return hash value here
}
bool operator( )(
const CComVariant& key1, const CComVariant& key2) const {
// Return true if key1 should be ordered before key2, false
otherwise
}
};
Remember that whenever your comparison considers two elements equivalent
(neither is less than the other, that is, !(a < b) and !(b < a) ), your
hash function must return the same value for both.
--
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