【发布时间】:2014-03-05 12:46:20
【问题描述】:
当我创建一个std::map 时,所有索引最初都没有指向任何地方。我一打电话给他们,他们就分配并分配了值 0。
例如:
map <int, int> x;
cout << x.[31233];
输出是0。
但是,我需要将所有标准赋值为 (-1) 而不是 0。
我该如何更改?
【问题讨论】:
-
无论如何,您都不能不使用像
int这样的标准类型来处理数据。您可以创建一个可以隐式转换为int的类,并且其构造函数在构造时将值设置为-1。 -
欢迎来到 Stack Overflow。 “谢谢”和“你好”通常在这里被省略,都是关于原始问题的。
-
std::map<>::operator[]自动插入并初始化键的值(如果它不存在于映射中)。 (并且int()为零)。如果您想要不同的东西,您可能需要find(key)键,如果生成的迭代器是x.end(),insert它的值是 (-1)。 -
@JoachimPileborg 好吧,理论上你可以编写一个自定义分配器,初始化为
-1.. 但是你为什么要这样做;) -
@lethal-guitar 因为你可以? =P