Dav*_*vid 5 c++ containers stl multidimensional-array
我有二维图
map <int, map<int, int>> _map;
Run Code Online (Sandbox Code Playgroud)
第一种初始化效果很好:
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;
Run Code Online (Sandbox Code Playgroud)
因此它打印:
100:200
Run Code Online (Sandbox Code Playgroud)
但是,第二次初始化失败:
map <int, map<int, int>> _map = {
{1, {{2, 100}}},
{1, {{3, 200}}}
};
std::cout << _map[i][j] << ":" << _map[i][k] << std::endl;
Run Code Online (Sandbox Code Playgroud)
第二张照片:
100:0
Run Code Online (Sandbox Code Playgroud)
我知道map具有“唯一键”,另一方面,我们可以像“ _map [i] [j]”一样进行初始化。
您能否解释一下如何以正确的方式初始化静态二维图?
这将是:
map<int, map<int, int>> _map = {
{1, {{2, 100}, {3, 200}}}
};
Run Code Online (Sandbox Code Playgroud)
您还可以:
_map[1] = {{2, 100}, {3, 200}};
Run Code Online (Sandbox Code Playgroud)
你的片段
map <int, map<int, int>> _map = {
{1, {{2, 100}}},
{1, {{3, 200}}}
};
Run Code Online (Sandbox Code Playgroud)
将“相当于”(初始化与插入):
_map.insert({1, {{2, 100}}});
_map.insert({1, {{3, 200}}}); // Fails as key 1 already present.
Run Code Online (Sandbox Code Playgroud)