首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

hash_map解决思路

2012-02-05 
hash_map一堆点坐标,每个点坐标和一个整数对应,想用hash_map查找点classhash_comp{public:enum{bucket_siz

hash_map
一堆点坐标,每个点坐标和一个整数对应,想用hash_map查找点

class   hash_comp
{
public:
enum
{bucket_size   =   4,
min_buckets   =   8
};
bool   operator   ()   (const   Point   &p1,const   Point   &p2)const  
{
if   (p1.distanceTo(p2)   <   dZERO)
{
return   true;
}
return   false;
}
size_t   operator()(const   Point3d   &pt)const
{
unsigned   long   nhash   =   sqrt(pt.x   *   pt.x   +   pt.y   *   pt.y)   *   1000;
return   (size_t)   nhash;
}

};

std::hash_map <Point,int,hash_comp> ::iterator   iter     =   m_hashmap.find(pt);
if   (iter   !=   m_hashmap.end())
{
}
else
{
int   nIndex   =   //得到索引;
m_hashmap.insert(std::pair <Point,int> (pt,nIndex));
;
}

哪儿错了?最后总点数不对啊

[解决办法]
哈希还是没研究透啊
[解决办法]
我也没怎么看懂,建议楼主加个注释。还有,一个点要是它的hash函数返回的不是唯一值的话还要判断冲突的,这点别忘了。
[解决办法]
hash_map未必比map快,你还是使用简单的map吧。
[解决办法]
if (iter != m_hashmap.end())
{
}
else
{
int nIndex = //得到索引;
m_hashmap.insert(std::pair <Point,int> (pt,nIndex));
;
}

这里逻辑不对.

热点排行