我想将自定义类的对象作为值传递到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;
这是正确的方法吗?
答案 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;