c++ - 使用键值对为零的 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>)
有没有办法可以做到这一点?
解决方案
unordered_map 表示哈希数据结构。根据散列定义,每个键都必须是唯一的。所以你不能用几个零 int 键初始化多数。相反,您可以使用保留功能:
无效保留 ( size_type n );
请求容量更改
将容器中的桶数 (bucket_count) 设置为最适合包含至少 n 个元素。
如果 n 大于当前 bucket_count 乘以 max_load_factor,则容器的 bucket_count 会增加并强制进行 rehash。
如果 n 低于此值,则该功能可能无效。
推荐阅读
- progressive-web-apps - 有没有办法在 iOS 12.2 的 PWA 中使用 mailto: 或 message: 方案?
- python-2.7 - 在 python 2.7 的 selenium web 驱动程序中从 Right_click 菜单中选择一个选项
- python-3.x - 从十进制格式数字中删除“.00”以使它们成为整数,保持其他十进制数字不变
- amp-html - 如何在 AMP 中获取动态数据?
- angular - Angular6 @ViewChild 未使用 ngIf 定义
- flutter - 如何修复颤振测试中的异步/等待错误?
- gradle - 如何使用 Gradle 删除不包括某些子目录的目录树?
- app-store - 无法连接到 VMWare 上的 App Store Mojave 10.14.2
- php - 如何只使用“循环”来删除句子中所有多余的空格,而不使用字符串修剪功能和字符串替换功能?
- java - 如何修复无效或损坏的 Jarfile?