stdext::hash_map浣跨敤瀛楃涓詫紙const char*錛夊仛key鐨勮瘽錛屼笉鏄彧鎸囧畾涓涓猚ompare鍑芥暟闅句箞綆鍗曪紝瑕佺粰瀹氫竴涓粨鏋勪綋錛屽叾鍖呮嫭hash鍑芥暟錛宑ompare鍑芥暟錛屼互鍙?#8220;妗惰瀹?#8221;
struct StringCompare
{
//define hash function for strings
enum
{
//parameters for hash table
bucket_size = 4, // 涓涓《4byte闀垮害錛堝洜涓簊izeof(char*)=4錛?/span>
min_buckets = 8 // 鏈灝戝瓨鍦?涓《
};
size_t operator()(const char* str) const
{
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0;
while (*str)
{
hash = hash * seed + (*str++);
}
return (hash & 0x7FFFFFFF);
}
bool operator()(const char *s1, const char* s2) const
{
if (strcmp(s1, s2) == 0)
{
return false;
}
else
{
return true;
}
}
};
鐒跺悗
stdext::hash_map<const char*, Your Data Type, StringCompare>

]]>