【问题标题】:C++ clearing a std::map with internal listsC++ 使用内部列表清除 std::map
【发布时间】:2020-09-30 08:44:06
【问题描述】:

如果我有这样的 std::map std::map<int, std::list<int> > myMap;

在地图中填充了列表并且我希望稍后清除所有元素之后,是否只需执行 myMap.clear(); 就足够了,还是我应该先浏览地图中的每个元素并先清除每个列表?

【问题讨论】:

  • 对所有成员对象和基类型对象递归地进行破坏。 clear() 将销毁节点,这将销毁包含的数据,如果该数据恰好是一个带有析构函数的对象,则会被调用。

标签: c++ stdmap stdlist


【解决方案1】:

不,您可以使用myMap.clear()。它负责所有必要的清理工作。

更准确地说,它deletes 树中的每个节点,并且每个节点都是一个std::pair<int, std::list<int>>,删除会导致调用析构函数std::list::~list - 这个析构函数负责数据的清理它拥有。

【讨论】:

  • 谢谢。我只是不确定这个。
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 2016-02-06
相关资源
最近更新 更多