作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 C++ 中是否有足够的方法从 std::any 存储的数据中提取哈希?好吧,或者至少是一个字节列表形式的对象及其长度
最佳答案
std::any
是一种类型安全机制,用于将已知类型的对象从一个位置传递到另一个位置,通过不需要知道该类型是什么的中介。从中计算哈希不是它的目标。事实上,如果不损害 any
的功能,这是不可能的。
散列对象需要了解该对象是什么以及正在做什么。假设您可以只查看对象表示的字节,从而从中计算出有意义的散列,结果不会很好。它似乎可以工作……一段时间。但最终,它会做错事。
您可以创建类似于 any
的类型删除类型,它需要对象来实现散列。但是 std::any
不是那种类型,因为任何不想散列他们放入 any
的类型的人都无法做到将所述对象存储在 any
中。
这是因为 any
提供的任何操作都是存储到 any
中的所有类型必须也提供的操作。例如,any
是可复制的,因此 any
不能 存储只能移动的类型。对于那些想要这样做的人来说,这是一种烦恼,并且您向 any
中转储的功能越多,该类型存储“任何”事物的能力就越受限制。
关于c++ - 来自 std::any 的足够散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66972217/
我是一名优秀的程序员,十分优秀!