gpt4 book ai didi

c++ - 来自 std::any 的足够散列

转载 作者:行者123 更新时间:2023-12-04 02:26:47 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com