加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何查找哈希表的大小?

发布时间:2020-12-16 09:29:30 所属栏目:百科 来源:网络整理
导读:我有一个像这样定义的哈希表 typedef std::unordered_mapunsigned long long int,unsigned long long int table_map; 在程序中,我使用fread将a文件的内容读入缓冲区,如下所示: fread(buffer,sizeof(long long int),1024,file1); 我将哈希表声明为 table_map
我有一个像这样定义的哈希表

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";

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

16384

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读