无法识别 ext/hasp_map 的解决

本文介绍了一种使用自定义哈希函数解决stdext::hash_map在不同平台上的编译问题的方法,并提供了一个具体的示例程序。
stdext::hash_map</STRING,INT>

1.问题 
使用stdext::hash_map<std::string,int>在有的平台上编译通不过的问题 
相应的解决方法是:

#pragma once 
#include <hash_map> 
#include <string> 
#include <iostream> 
struct MyStringComp 
{ 
	//define hash function for strings 
	enum 
	{ 
		//parameters for hash table 
		bucket_size = 4, 
		min_buckets = 8 
	}; 
	size_t operator()(const std::string & s1) const 
	{ 
		//hash string s1 to size_t value 
		const unsigned char * p = (const unsigned char *)s1.c_str(); 
		size_t hashval = 0; 
		for (size_t n = s1.size();0 < n;--n) 
			hashval += *p++; //or whatever 
		return (hashval); 
	} 
	bool operator()(const std::string & s1, const std::string & s2) const 
	{ 
		if (s1.compare(s2) < 0) 
		{ 
			return true; 
		} 
		else 
		{ 
			return false; 
		} 
	} 
}; 
int main(int arg,char * argv[]) 
{ 
	stdext::hash_map<std::string,int, MyStringComp> mapStringTable; 
	mapStringTable.insert(std::pair<std::string,int>("13136",5)); 
	mapStringTable.insert(std::pair<std::string,int>("16633",10)); 
	mapStringTable.insert(std::pair<std::string,int>("16733",10)); 
	mapStringTable.insert(std::pair<std::string,int>("16833",10)); 
	mapStringTable.insert(std::pair<std::string,int>("16933",10)); 
	mapStringTable.insert(std::pair<std::string,int>("16033",10)); 
	stdext::hash_map<std::string,int, MyStringComp>::iterator It; 
	It = mapStringTable.find("16833"); 
	if (It != mapStringTable.end()) 
	{ 
		std::cout<<It->first; 
	} 
	getchar(); 
	return 0; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值