我有二维图
map <int, map<int, int>> _map;
第一种初始化效果很好:
int i = 1, j = 2, k = 3;
map <int, map<int, int>> _map;
_map[i][j] = 100;
_map[i][k] = 200;
std::cout << _map[i][j] << ":" << _map[i][k] << std::endl;
因此它打印:
100:200
但是,第二次初始化失败:
map <int, map<int, int>> _map = {
{1, {{2, 100}}},
{1, {{3, 200}}}
};
std::cout << _map[i][j] << ":" << _map[i][k] << std::endl;
第二张照片:
100:0
我知道map具有“唯一键”,另一方面,我们可以像“_map [i] [j]”一样进行初始化。
您能否解释一下如何以正确的方式初始化静态二维 map ?
最佳答案
这将是:
map<int, map<int, int>> _map = {
{1, {{2, 100}, {3, 200}}}
};
您还可以拥有:
_map[1] = {{2, 100}, {3, 200}};
您的片段
map <int, map<int, int>> _map = {
{1, {{2, 100}}},
{1, {{3, 200}}}
};
将“等效”(初始化与插入):
_map.insert({1, {{2, 100}}});
_map.insert({1, {{3, 200}}}); // Fails as key 1 already present.
关于c++ - 在C++中初始化静态二维映射<int,int>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57896061/