Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个C++;将哈希作为字母和字符串的混合返回的哈希函数? 我知道C++中的STL STD::Hash类只返回字符串形式的散列。但是我希望有一个哈希函数,它将哈希作为字母和字母的混合,传递C++中的整数,减少冲突。有没有我可以使用的标准库函数_C++_String_Hash_Stl_Hash Function - Fatal编程技术网

是否有一个C++;将哈希作为字母和字符串的混合返回的哈希函数? 我知道C++中的STL STD::Hash类只返回字符串形式的散列。但是我希望有一个哈希函数,它将哈希作为字母和字母的混合,传递C++中的整数,减少冲突。有没有我可以使用的标准库函数

是否有一个C++;将哈希作为字母和字符串的混合返回的哈希函数? 我知道C++中的STL STD::Hash类只返回字符串形式的散列。但是我希望有一个哈希函数,它将哈希作为字母和字母的混合,传递C++中的整数,减少冲突。有没有我可以使用的标准库函数,c++,string,hash,stl,hash-function,C++,String,Hash,Stl,Hash Function,我想要这样的东西: H(12345)=a44f81ji234kop 最小冲突数和良好分布。 < P> C++标准库缺乏将不同类型的散列或哈希多个对象组合为一个散列的功能,但不幸的是, 一个好方法是从以下位置使用哈希基础结构: 这里解决的问题是如何使用M种不同的散列算法,使用与N+M成比例的源代码量,支持N种不同类型的密钥的散列,与当前基于std::hash的系统相反,该系统需要与N*M成比例的源代码量,因此在今天的实践中,M==1,并且单一哈希算法仅由std::lib实现者提供。对于客户端来说,

我想要这样的东西: H(12345)=a44f81ji234kop
最小冲突数和良好分布。

< P> C++标准库缺乏将不同类型的散列或哈希多个对象组合为一个散列的功能,但不幸的是,

一个好方法是从以下位置使用哈希基础结构:

这里解决的问题是如何使用M种不同的散列算法,使用与N+M成比例的源代码量,支持N种不同类型的密钥的散列,与当前基于
std::hash
的系统相反,该系统需要与N*M成比例的源代码量,因此在今天的实践中,M==1,并且单一哈希算法仅由
std::lib
实现者提供。对于客户端来说,为所有内置标量类型(
int
long
double
等)提供替代算法太困难且容易出错。事实上,委员会甚至很难为我们的客户可能合理地想要用作键的所有类型提供哈希支持:
元组
向量
复杂
持续时间
转发列表
等等


您可以选择任何您喜欢的普通散列函数,然后将转换为“a44f81ji234kop”样式的文本作为第二步(下面讨论)。标准库并不试图提供任何关于散列函数质量的保证,因此,如果您希望得到这些保证,最好选择第三方库,例如

拥有数字后,可以使用将其转换为您喜欢的数字加文本表示形式。您可以在转换时指定基准

  • int->text使用
  • text->int(即,如果您希望从基36值返回数值散列值),请使用

不,标准库中没有这样的哈希函数,需要获取
std::size\t
值;这取决于你如何解释这些比特。你能澄清什么是“字母和字符串的混合体”吗?字符串可以包含数字和字母。这篇文章有一种几乎压倒一切的芳香,那么你为什么不告诉我们你真正想做什么呢?你到底为什么需要这个?听起来您需要一个base64编码的加密摘要。毫无疑问,它将为您提供一个体面的发行版,而不是您可以将其用于任何用途(当然不是用于std::unordered_映射的密钥,它只是将其转换为一个数字)。当你说,“…碰撞更少”-碰撞比什么少
std::hash
?您的输出格式类似于原始字节的base32、base36或base64编码。这没什么特别的;您可以轻松地将数值结果转换为该格式。我同意@WhozCraig这听起来像是个XY问题。