0

我想将自定义类的对象作为值传递给 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;

这是正确的方法吗..?

4

1 回答 1

4

实际上,没有。如果要将demo对象存储在 中map,则应使用map<int, demo>. 将资源管理留给std::map. 此外,通过使用delete ptr你会破坏刚刚创建的对象,并且my_map[index]将是一个无效的指针。

只需使用my_map.insert(make_pair(myIndex, myDemoObject));.

另请注意,my_map[myIndex]如果它不存在, using 将使用给定索引创建对象,因此您可以执行以下操作:

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;
于 2013-09-24T20:03:55.500 回答