C++ 初始化c++;14具有k个存储桶且键值对为零的无序_映射

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

我试图创建一个无序的_映射,其中初始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";
}

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;istd::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;
    }

}