【发布时间】:2019-09-11 20:03:25
【问题描述】:
我有二维地图
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[i][j]”一样初始化。
您能否解释一下如何以正确的方式初始化静态二维地图?
【问题讨论】:
-
请注意,当您执行
_map[i][k] = 200;时,您不会初始化_map[i],因为它之前在您执行_map[i][j] = 100;时已初始化,它只是访问它。operator[]如果存在则返回元素,否则将其添加到地图中然后返回。
标签: c++ multidimensional-array stl containers