我有一个像这样定义的哈希表
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(c1)因为它只返回值32.有没有办法找到它?
谢谢, 苏尼
答案 0 :(得分:4)
将容器的size属性乘以一对的大小:
std::cout << c1.size() * sizeof(table_map::value_type) << "\n";
在我的系统上,打印出来:
16384
这不完全准确,因为没有考虑簿记数据。你无法解释它,因为(据我所知),该标准对该实现细节没有任何保证。
如果检查存储区数据,可能会获得稍微好一点的数据。 :: bucket,:: bucket_count,:: bucket_size。这可能只会为您提供有关键,值和对的数据。我没试过。
答案 1 :(得分:3)
所有标准库容器都有一个size()
成员函数,它返回容器中元素的数量。
您只需致电c1.size()
。