gpt4 book ai didi

c++ - 如何找到哈希表的大小?

转载 作者:太空狗 更新时间:2023-10-29 20:18:38 26 4
gpt4 key购买 nike

我有一个这样定义的哈希表

typedef std::unordered_map<unsigned long long int,unsigned long long int> table_map;

在程序中,我使用 fread 将文件的内容读入缓冲区,如下所示:

fread(buffer, sizeof(long long int), 1024, file1);

我将哈希表声明为

table_map c1;

现在我创建一个哈希表,如下所示

for (i = 0; i < 1024; i++)
c1.insert(table_map::value_type(buffer[i], i));

现在我的问题是,在 for 循环之后我怎样才能得到哈希表的大小?

它有 1024 个 unsigned long long int 类型的元素和相同类型的键,但我不能使用 sizeof(Mymap) 或 `size of(c1) 因为它只是返回值32.有什么办法可以找到吗?

谢谢,苏尼尔

最佳答案

将容器的大小属性乘以一对的大小:

std::cout << c1.size() * sizeof(table_map::value_type) << "\n";

在我的系统上,打印出:

16384

这并不完全准确,因为没有考虑簿记数据。您无法解释它,因为(据我所知)该标准对该实现细节没有任何保证。

如果您检查存储桶数据,您可能会得到更好的数据。::bucket,::bucket_count,::bucket_size。不过,这可能只会为您提供有关键、值和对的数据。我没试过。

关于c++ - 如何找到哈希表的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562086/

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