我应该在使用cd

时间:2017-12-11 02:11:24

标签: c++ stl

我想知道在使用之前是否必须清除std::map?例如,在下面的代码中我应该在构造函数中调用m_map.clear吗?

struct stu
{
  ...
}

class A
{
 public:
     A()
       {
          m_map.clear;  // is this necessary?
       };
     ~A();

 private:
     map<int ,stu> m_map;
}

1 个答案:

答案 0 :(得分:3)

无需在类的构造函数中调用clear()。

通过搜索一个很好的参考网站,例如:http://en.cppreference.com/w/cpp/container/map

,可以很好地了解STL中特定方法的作用,以及何时以及为什么要调用它。

如果向下浏览页面,您将找到clear方法,并在点击链接后,对其功能进行说明“从容器中删除所有元素”。你有没有添加任何元素到这个容器?不,所以没有必要调用这种方法。

此外:如果您没有对其执行任何初始化操作,您如何知道任何数据成员所处的状态?在这种情况下,可以保证调用成员变量的默认构造函数std::map m_map变量。类的默认构造函数是不带参数的构造函数方法,或者所有参数都是通过默认值提供的。所提供的参考网站再次声明默认构造函数“1)默认构造函数。构造空容器。”因此,您的容器(以及许多其他STL容器)完全可以立即使用,无需清理。