Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.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++ std::hash和/或boost::hash的用途是什么?_C++_C++11_Hash_Stdhash - Fatal编程技术网

C++ std::hash和/或boost::hash的用途是什么?

C++ std::hash和/或boost::hash的用途是什么?,c++,c++11,hash,stdhash,C++,C++11,Hash,Stdhash,为什么提供哈希函数而不指定引用的任何实现,也不指定引用的算法(md5、sha256等) 数据结构也有类似的特征,如C++标准兼容 STD::unordeDeMAP/SET/MultIAP/MultSe::HasHyb函数< /C> > /P> 所以我不明白的是: 为什么要提供这种未记录的方法 实现细节是正确使用哈希函数的基础,从程序员的角度来看,这些函数的用途是什么 这个函数可以链接到特定的算法吗 为什么要提供这种未记录的方法 他们不是没有证件的 实现细节是正确使用哈希函数的基础,从程序员的

为什么提供哈希函数而不指定引用的任何实现,也不指定引用的算法(md5、sha256等)

数据结构也有类似的特征,如C++标准兼容<代码> STD::unordeDeMAP/SET/MultIAP/MultSe::HasHyb函数< /C> > /P> 所以我不明白的是:

  • 为什么要提供这种未记录的方法
  • 实现细节是正确使用哈希函数的基础,从程序员的角度来看,这些函数的用途是什么
  • 这个函数可以链接到特定的算法吗
为什么要提供这种未记录的方法

他们不是没有证件的

实现细节是正确使用哈希函数的基础,从程序员的角度来看,这些函数的用途是什么


实现是未指定的,它们应该与无序容器一起使用。它们应该是尽可能好的散列函数,以便有效地将元素分配到存储桶中。其他的都没有说明

请注意,如果使用具有用户定义类型的无序容器,则希望用户提供这些

这个函数可以链接到特定的算法吗

为什么不呢

为什么要提供这种未记录的方法

他们不是没有证件的

实现细节是正确使用哈希函数的基础,从程序员的角度来看,这些函数的用途是什么


实现是未指定的,它们应该与无序容器一起使用。它们应该是尽可能好的散列函数,以便有效地将元素分配到存储桶中。其他的都没有说明

请注意,如果使用具有用户定义类型的无序容器,则希望用户提供这些

这个函数可以链接到特定的算法吗


为什么不呢?

“它们应该是尽可能好的哈希函数”它们“应该”?真正地当我谈到未记录时,顺便说一句,我指的是实现细节,这是处理散列函数时唯一重要的事情。@user1824407:不太可能,无序容器即使使用最糟糕的散列函数也能正常工作。。。has函数的质量不影响行为,只影响性能。好的,对于数据结构,使用良好的逻辑,可以避免这个问题,但是std::hash呢?如果我需要依赖散列函数10年或更长时间,并且它的实现基本上是特定于编译器的,并且随着时间的推移它可能会改变:这有什么意义?@user1824407:当然你不能!它们只应将元素分配到桶中。如果您需要其他内容的散列,那么创建您自己的实现,您可以控制它……我认为对于他所要求的内容存在困惑。std::hash和boost::hash不是加密哈希函数,也不是围绕SHA或MD5的包装器。如果您查看文档,就会发现它们并不适用于加密应用程序()。你需要看看OpenSSL之类的东西,“它们应该是尽可能好的散列函数”它们“应该”?真正地当我谈到未记录时,顺便说一句,我指的是实现细节,这是处理散列函数时唯一重要的事情。@user1824407:不太可能,无序容器即使使用最糟糕的散列函数也能正常工作。。。has函数的质量不影响行为,只影响性能。好的,对于数据结构,使用良好的逻辑,可以避免这个问题,但是std::hash呢?如果我需要依赖散列函数10年或更长时间,并且它的实现基本上是特定于编译器的,并且随着时间的推移它可能会改变:这有什么意义?@user1824407:当然你不能!它们只应将元素分配到桶中。如果您需要其他内容的散列,那么创建您自己的实现,您可以控制它……我认为对于他所要求的内容存在困惑。std::hash和boost::hash不是加密哈希函数,也不是围绕SHA或MD5的包装器。如果您查看文档,就会发现它们并不适用于加密应用程序()。您需要看看类似OpenSSL的东西。std::hash和sha/md5是不同的东西。散列用于为数据结构查找之类的事情生成散列代码。它不是一个加密哈希函数。std::hash和sha/md5是不同的东西。散列用于为数据结构查找之类的事情生成散列代码。它不是一个加密哈希函数。