使用构造函数初始化 STL 映射

initialize STL map with constructor

本文关键字:STL 映射 初始化 构造函数      更新时间:2023-10-16

我有一个带有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*使用的内存。我该怎么做?

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

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

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

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

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

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