std::map 作为类成员

Adi*_*ore 0 c++ memory

我有一个带有成员 std::map<int,int> 的类 X m_lookupTable。我应该使用以下哪项:

Class X {
...
private:
    std::map<int,int> m_lookupTable;
...
}
Run Code Online (Sandbox Code Playgroud)

或在类的析构函数中使用new和分配delete

class X{
private:
   std::map<int,int>* m_lookupTable;
    X() {
        m_lookupTable = new std::map<int,int>();
    }
    
   ~X(){
       delete m_lookupTable;
    }
} 
Run Code Online (Sandbox Code Playgroud)

什么应该是首选方式,为什么?

Dev*_*lus 8

我建议使用一个简单的成员。动态分配它,没有任何好处,并且无缘无故地增加了不必要的开销。如果处理不当,它还可能导致内存泄漏。

当您使用作业或复制课程时,您还必须小心,然后您必须自己处理。

如果可能,总是更喜欢自动而不是动态对象。