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

Passing custom class object as a value into STL map

本文关键字:STL 映射 值传 自定义 对象      更新时间:2023-10-16

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

这是正确的方法吗..?

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