读书人

hash_map解决思路

发布时间: 2012-02-05 12:07:15 作者: rapoo

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));
;
}

这里逻辑不对.

读书人网 >C++

热点推荐