2013-09-24 69 views
0

我想将自定义类的对象作为值传递到STL映射。我怎么做..?将自定义类对象作为值传递到STL映射

这里是一个代码:

class demo 
{ 

int a, b,c,d,e; 

} 

// here is how declare my map: 

map<int, demo*> my_map; 

这是怎么回事,我使用它变成功能:

demo *ptr = NULL; 
ptr = new demo; 

下面是我插入地图

my_map.insert(make_pair(int, ptr); 

// Delete current instance 

delete ptr; 

是这是一个正确的方式..?

回答

3

其实没有。如果要将demo对象存储在map中,则应该使用map<int, demo>。将资源管理设置为std::map。另外,通过使用delete ptr您销毁刚刚创建的对象,并且my_map[index]将是无效指针。可以使用my_map.insert(make_pair(myIndex, myDemoObject));

另外请注意,使用my_map[myIndex]将创建对象指定索引,如果不存在的话,那么你可以做到以下几点:

std::map<int, demo> my_map; 
my_map[1].a = 42; 
my_map[2].b = 1337; 
my_map[3].c = 314159; 
my_map[4].d = 23; 
+0

其实我想创建演示类的4个新的实例和将其成员(即a,b,c,d,e)的值分配给4个不同的“Key”。这就是为什么我调用delete ptr,以便创建演示类的新实例。 – user2812535

+0

此外,我有意在插入函数后遗漏了一些代码。我只粘贴了代码的相关部分。 – user2812535

+0

此外,我有意在插入函数后遗漏了一些代码。我只粘贴了代码的相关部分。 – user2812535

相关问题