如何在c ++中清除unordered_map的unordered_map?

jpb*_*123 3 c++ struct unordered-map

我有一张地图如下图所示.

struct  B {
  int b1;
  int b2;
  int b3;
};

struct A {
  B a1;
  B a2;
};

unordered_map<int, unordered_map<int, A>> outer_map;
Run Code Online (Sandbox Code Playgroud)

我用一些元素填充了这个inner_map,每个内部map对象也初始化了几个元素.

所以我的问题是如何清除outer_map,以便我可以新填充数据?

outer_map.clear()有效吗?当你在这里打电话时,内部到底发生了什么?有人可以提供一些内部细节吗?

Ale*_*lex 7

如果运行outer_map.clear()keys(int)和values(unordered_map<int, A>)将全部删除.当它们被移除时,如果有任何析构函数要调用,它们将被调用.这意味着unordered_map<int, A>将调用任何存储的析构函数,这反过来将删除所有的A析构函数,并调用它们的析构函数.