我有二维图

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/

10-11 22:42
查看更多