C ++清除带有内部列表的std :: map

问题描述

如果我有一个类似std::map<int,std::list<int> > myMap;的std :: map

在地图上填充列表之后,我希望稍后清除所有元素,这是否足以完成myMap.clear();,还是应该首先浏览地图中的每个元素并首先清除每个列表? / p>

解决方法

否,您只能使用myMap.clear()。它负责所有必要的清理工作。

更精确地讲,它delete树中的每个节点,并且由于每个节点都是std::pair<int,std::list<int>>,因此删除操作会导致析构函数std::list::~list被调用-并且这个析构函数要小心清除其拥有的数据。