我想知道在使用之前是否必须清除std::map
?例如,在下面的代码中我应该在构造函数中调用m_map.clear
吗?
struct stu
{
...
}
class A
{
public:
A()
{
m_map.clear; // is this necessary?
};
~A();
private:
map<int ,stu> m_map;
}
答案 0 :(得分:3)
无需在类的构造函数中调用clear()。
通过搜索一个很好的参考网站,例如:http://en.cppreference.com/w/cpp/container/map
,可以很好地了解STL中特定方法的作用,以及何时以及为什么要调用它。如果向下浏览页面,您将找到clear
方法,并在点击链接后,对其功能进行说明“从容器中删除所有元素”。你有没有添加任何元素到这个容器?不,所以没有必要调用这种方法。
此外:如果您没有对其执行任何初始化操作,您如何知道任何数据成员所处的状态?在这种情况下,可以保证调用成员变量的默认构造函数std::map m_map
变量。类的默认构造函数是不带参数的构造函数方法,或者所有参数都是通过默认值提供的。所提供的参考网站再次声明默认构造函数“1)默认构造函数。构造空容器。”因此,您的容器(以及许多其他STL容器)完全可以立即使用,无需清理。