C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何查找哈希表的大小?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个像这样定义的哈希表

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

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

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个elemts类型的unsigned long long int以及相同类型的键但是我不能使用sizeof(Mymap)或`size of(c1)因为它只返回值32.有没有办法找到它?

谢谢,
苏尼尔

解决方法

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

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

我的系统上,这打印出来:

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

如果检查存储区数据,可能会获得稍微好一点的数据. :: bucket,:: bucket_count,:: bucket_size.这可能只会为您提供有关键,值和对的数据.我没试过.

大佬总结

以上是大佬教程为你收集整理的c – 如何查找哈希表的大小?全部内容,希望文章能够帮你解决c – 如何查找哈希表的大小?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。