将自定义类对象作为值传递到STL映射中

时间:2013-09-24 19:59:47

标签: c++ object vector stl reference

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

这是正确的方法吗?

1 个答案:

答案 0 :(得分:4)

实际上,没有。如果您要将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;