如何在C++中清空unordered_map的unordered_map?

3
我有一张如下所示的地图。
struct  B {
  int b1;
  int b2;
  int b3;
};

struct A {
  B a1;
  B a2;
};

unordered_map<int, unordered_map<int, A>> outer_map;

我使用了一些元素来填充这个inner_map,每个内部map对象也初始化了一些元素。所以我的问题是如何清空outer_map,以便我可以重新填充数据?outer_map.clear()会起作用吗?当你在这里调用clear时,内部到底发生了什么?有人能提供一些内部细节吗?

2
不要在C++中使用typedef struct,它是多余的,没有任何好处,只会带来麻烦。 - Slava
1
outer_map.clear() 应该能够正常工作,因为内部映射是按值保存的--它们的析构函数将被调用。除此之外,你的“例子”还有几个问题(typedef 是什么意思--这不是C语言吧?)。 - DevSolar
谢谢 @DevSolar - jpb123
1个回答

7

如果您运行outer_map.clear(),则所有键(int)和值(unordered_map<int,A>)都将被删除。当它们被删除时,如果有任何析构函数需要调用,则它们将被调用。这意味着任何存储的unordered_map<int,A>的析构函数将被调用,从而也将删除所有的A并调用它们的析构函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接