用构造函数初始化STL映射

时间:2013-10-28 18:08:24

标签: c++ map stl

我有一个带有STL映射的类,另一个类作为成员变量。

这是我的班级定义:

class demo
{
    map<int, map<int, string> > mymap;

    class temp
    {
        int a, b;
    }

    map<string, pair<string, temp*> > mymap1;

    demo();
    ~demo();
}

如何使用构造函数将mymapmymap1初始化为NULL。我还想使用析构函数释放temp*使用的内存。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您无法将mymapmymap1初始化为NULL,因为它们不是指针,而是对象

如果你想用一些参数初始化它们,你应该在构造函数初始化列表中进行:

demo() : mymap(/* initialization parameters */),
         mymap1(/* initialization parameters */) {}

您也不应该像temp*中那样使用原始指针。而是使用像std::unique_ptr<temp>这样的智能指针。使用智能指针,您不必释放任何内存,因为它将自动为您完成。

您所要做的就是将地图mymap1的声明更改为:

map<string, pair<string, unique_ptr<temp>>> mymap1;