【发布时间】:2017-05-04 20:51:50
【问题描述】:
我在这里有点困惑,一张名为 myMap 的地图是地图内的地图 显然在价值方面,而第二张地图是 非常正常的 int vs char 映射。 不允许在一种情况下(即 myMap) 重复键(异常行为),而在另一种情况下则没有。
#include <iostream>
#include <map>
using namespace std;
int main(void)
{
map<int, map<int,char> > myMap; // map inside map
map<int, char> ourMap; // normal map
myMap[1][1] = 'A';
myMap[1][2] = 'B'; // should overwrite previous value
myMap[2][1] = 'C';
myMap[2][2] = 'D'; // should overwrite previous value
ourMap[1] = 'A';
ourMap[1] = 'B';
cout << "[1][1] = " << myMap[1][1] << endl;
cout << "[1][2] = " << myMap[1][2] << endl;
cout << "[2][1] = " << myMap[2][1] << endl;
cout << "[2][2] = " << myMap[2][2] << endl;
cout << "ourMap[1] = " << ourMap[1] << endl;
return 0;
}
// And here is the output . By the way I was anticipating , [1][2] = B , [2][2] = D & ourMap[1] = B . But something else comes out .
OUTPUT :
[1][1] = A
[1][2] = B
[2][1] = C
[2][2] = D
ourMap[1] = B
如果我们在 C++ 中的 map 里面有 map,它们会开始偏离它们的正常行为,即不能有重复的键 我无法弄清楚它是怎么回事。谁能告诉我这是怎么回事?如果这个问题听起来很有趣,非常抱歉?
My Question is for myMap
myMap[x][y] = something
u can have only distinct value of x ?
For normal map it is like that only .
【问题讨论】:
-
请放心,不会发生密钥重复或异常行为
-
"myMap[1][2] = 'B'; // 应该覆盖之前的值" - 为什么?
-
为什么你认为
myMap[1][2] = 'B'应该覆盖myMap[1][1] = 'A'? -
我的问题是针对 myMap myMap[x][y] = 你只能有不同的 x 值吗?对于法线贴图,仅此而已。
-
只有一个 x 的不同值。
标签: c++ dictionary stl