c++ map 存储struct

发布时间 2023-07-09 23:45:11作者: marklove

#pragma pack(push, 1)
struct TMagicgod {
	WORD wMagicId;//技能ID
	int getSkillType() {
		return btSkillType % SkillType_JOINT_MASK;
	}
	bool isJoint() {
		return btSkillType >= SkillType_JOINT_MASK;
	}
};
#pragma pack(pop)
typedef TMagicgod* pTMagicgod;


//存储非指针
std::map<int, TMagicgod> g_MagicTplMap; //技能配置

//自动申请 内存空间 并且拿到 指针用于填写内容
		TMagicgod& item = g_MagicTplMap[wMagicId];
		//?这是什么写法》?  如果不存在则自动添加一条 ?  存放的不是指针 使用 & 符号获得 访问等等。。。?这样做list列表会同步内容?

//滞空内存
		memset(&item, 0, sizeof(item)); 
//填写数据
		item.wMagicId = wMagicId;

//搜索返回指针
TMagicgod* findDBMagicPtr(int wMagicId)
{
	std::map<int, TMagicgod>::iterator it = g_MagicTplMap.find(wMagicId);
	if (it == g_MagicTplMap.end())
	{
		return nullptr;
	}
	return &it->second;
}

//清空
	g_MagicTplMap.clear();
//clear()方法,通常只是使得容器内部的对象通通析构,但容器本身的内存无法得到释放。即篮子里面东西拿走了,篮子占的空间还在,这样是为了方便下次存放新的对象时,不需要再次申请空间。