正确的初始化地图和在C++中删除的方法

Sur*_*ani 6 c++ stl map data-structures

我正在尝试创建在我的类的构造函数中声明的静态映射.该地图将在一种方法中初始化并填充数据,并在另一种方法中免费使用.这是正确的方法吗?

using namespace std;
#include <map>

struct a {
     string b;
     string c;
}

class aClass:public myClass
 {
 public:
      aClass();
      virtual ~aClass();

 private: 
      map<string, a> myMap;
      void method(int a);
      void amethod(int b);
 }
 void aClass::method(int a)
 {
      myMap = new map<string, a>;
      // Addition of elements;
 }
 void aClass::amethod(int b)
 {
      // retrival of elements
      myMap.clear();
      delete myMap;
 }
Run Code Online (Sandbox Code Playgroud)

K-b*_*llo 9

  map<string, a> myMap;
  ....
  myMap = new map<string, a>;
Run Code Online (Sandbox Code Playgroud)

这里myMap不是指针,因此初始化new不正确.也许您正在寻找:

  myMap = map<string,a>();
Run Code Online (Sandbox Code Playgroud)

复制到myMap一个默认初始化的地图.

请注意,您不需要(实际上不能)delete myMap,因为它不是指针.它是一个成员变量,编译器会在你的类被销毁时自动销毁它.