如何将无序映射的值设置为 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
的行为。
当我声明一个无序映射时,默认情况下所有值都分配给 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
的行为。