如何将无序映射的值设置为 0 以外的数字

How to set value of an unordered map to number other than 0

当我声明一个无序映射时,默认情况下所有值都分配给 0。但我想分配所有值说 -1。有什么办法吗?

例如看这段代码

#include <iostream>
#include <unordered_map> 

using namespace std;
 unordered_map<int, int> umap; 
 

int main()
{
     cout<<umap[10];
    
}

此代码的输出为 0。看到未分配的位置默认输出为 0。我的问题是,有什么办法可以改变这个并分配一个我喜欢的号码吗?

您可以使用默认构造函数创建自定义类型以初始化为 -1:

struct MyInt
{
    int i = -1;
};

unordered_map<int, MyInt> umap; 

如果您不想键入 .i 访问器,您可以提供 operator int() 和其他运算符来模仿常规 int 的行为。