【发布时间】:2012-01-23 22:22:02
【问题描述】:
我正在寻找 C++ 中的散列函数将字符串散列为 int。我使用了 CMapStringToPtr,但它有一个名为“GetNextAssoc”的函数,允许将密钥作为字符串检索,这意味着必须存储该字符串并且它会占用大量内存。 是否有任何其他哈希函数获得更少的内存并且不存储字符串?
【问题讨论】:
-
试试
std::hash<std::string>()()。 -
我不确定我是否理解您的问题。在几乎任何使用散列函数的地方,您还必须跟踪原始数据,因为散列函数都有冲突,并且需要原始数据才能基于散列进行查找以确定或解决冲突时它们发生了。
-
是的,但由于内存使用,我不需要保留原始数据。我也不想解决冲突,实际上我的目标是保持冲突!
-
我会使用
boost::hash_value(const std::string & val) -
@Kerrek:
std::hash<std::string>()()seems to be a feature of C++11。我的编译器不走运(VS 2008)。