对于常规类型,我的意思是 Stepanov 的定义编程要素基本上,存在相等的概念,并且作为彼此副本的对象比较相等。
所以当你有常规类型时T
,并且等式关系是传递的(a == b && b == c => a == c),你可以定义一个(不平凡的) 符合等式定义的哈希函数 (a == b => h(a) == h(b))。总是。
但该标准并没有包括很多std::hash http://en.cppreference.com/w/cpp/utility/hash专业化。例如。std::complex http://en.cppreference.com/w/cpp/numeric/complex没有,也没有容器,但值得注意的例外是vector<bool>
and bitset
.
所以我想知道这里的设计原理是什么。
或者,换个方式问:是否有理由不提供std::hash
您自己的类型的专业化,前提是它们是常规的并且平等是可传递的?
Yes.
当类型具有以下两个属性时,我认为您不应该定义std::hash
:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)