C++ 初始化c++;14具有k个存储桶且键值对为零的无序_映射
我试图创建一个无序的_映射,其中初始bucket(k)的数量最少,所有键值对都初始化为零。稍后,它应该进入for循环并打印值C++ 初始化c++;14具有k个存储桶且键值对为零的无序_映射,c++,c++14,C++,C++14,我试图创建一个无序的_映射,其中初始bucket(k)的数量最少,所有键值对都初始化为零。稍后,它应该进入for循环并打印值 int someFunction(int k){ unordered_map<int, int> majority(k, {0,0}); } for(auto m : majority){ cout << m.first << " " << m.second << " \n"; } intsome
int someFunction(int k){
unordered_map<int, int> majority(k, {0,0});
}
for(auto m : majority){
cout << m.first << " " << m.second << " \n";
}
intsomefunction(intk){
无序映射多数(k,{0,0});
}
对于(自动m:多数){
coutunordered_映射表示哈希数据结构。根据哈希定义,每个键都必须是唯一的。因此不能用几个零整数键初始化多数。
相反,您可以使用保留功能:
空位保留(尺寸\类型n)
请求更改容量
将容器中的桶数(桶计数)设置为最大
适合包含至少n个元素
如果n大于当前bucket_计数乘以
最大装载系数,容器的桶计数增加,并且
重新洗牌是被迫的
如果n小于该值,则该函数可能无效
std::无序_映射
仅支持唯一键,因此构造函数不存在
如果要多次使用同一个键,可以使用std::unordered_multimap
。有关可用的构造函数,请参阅
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<int, int> map;
const int k = 5;
for (int i = 0; i < k; ++i)
{
map.emplace(0, 0);
}
for (auto& kv: map)
{
std::cout << kv.first << " " << kv.second << std::endl;
}
}
#包括
#包括
int main(){
std::无序的_多重映射;
常数int k=5;
对于(int i=0;i std::cout无序映射多数(k)
有什么问题?谢谢。我也试过了。我已经更新了代码,现在尝试打印值。根据您的建议,它不会进入for循环。什么是“所有键值对”平均值?unordered_map
仅包含固定数量的特定键值对。如果您只想为空容器设置多个存储桶,则可以使用。谢谢。我的意思是,我希望映射中有k个键值为0-0的条目。这意味着重复的键值(映射不合理).所以,我倾向于认为我要求的是一些不可能实现的东西…好吧,如果你想要多个等价键,有无序的\u multimap
。虽然不清楚你为什么想要这样。整个问题听起来像是一个问题
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<int, int> map;
const int k = 5;
for (int i = 0; i < k; ++i)
{
map.emplace(0, 0);
}
for (auto& kv: map)
{
std::cout << kv.first << " " << kv.second << std::endl;
}
}