首页 > 解决方案 > 使用键值对为零的 k 个桶初始化 c++14 unordered_map

问题描述

我正在尝试创建一个具有最少数量的初始存储桶(k)的 unordered_map,所有键值对都初始化为零。稍后,它应该进入 for 循环并打印值。

int someFunction(int k){
  unordered_map<int, int> majority(k, {0,0});
}

for(auto m : majority){
  cout << m.first << " " <<  m.second << " \n";
}

我收到以下编译(c++ 14)错误:

no matching function for call to ‘std::unordered_map<int, int>::unordered_map(int&, <brace-enclosed initializer list>)

有没有办法可以做到这一点?

标签: c++c++14

解决方案


unordered_map 表示哈希数据结构。根据散列定义,每个键都必须是唯一的。所以你不能用几个零 int 键初始化多数。相反,您可以使用保留功能:

无效保留 ( size_type n );

请求容量更改

将容器中的桶数 (bucket_count) 设置为最适合包含至少 n 个元素。

如果 n 大于当前 bucket_count 乘以 max_load_factor,则容器的 bucket_count 会增加并强制进行 rehash。

如果 n 低于此值,则该功能可能无效。


推荐阅读