【新手问题】std::map如何使用序列化

redlz2500 2013-03-13 08:20:55
貌似不能直接使用序列化啊
我现在的做法是新创建一个类,然后将std::map放入其中作为一个对象,再将需要的insert、find一类的方法作为这个类的方法,但是这样很麻烦的样子啊
求简单的让std::map支持序列化的方法~
...全文
268 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlz2500 2013-03-13
  • 打赏
  • 举报
回复
…………解决了…… 重新在反序列化中给m_iNextValidID赋值就是了……
redlz2500 2013-03-13
  • 打赏
  • 举报
回复
刚才试了一下,发现没有必要增加中间管理类,增加了后反而麻烦 但是现在有个问题,管理类中的对象使用了静态属性
static UID m_iNextValidID;
我目前读取的方法如下:

		IntNum i;//包含多少个对象
		ar>>i;
		std::map<CString,MyObject*>::iterator iter;
		IntNum j;
		MyObject* s;
		for(j=0;j<i;++j)
		{
			s=new MyObject();
			s->Serialize(ar);
		};
然后就发现生成的s一出来就自带id属性……

MyObject::MyObject()
{
	this->m_UID=++this->m_iNextValidID;
};
这样会导致其静态m_iNextValidID与实际的NextValidID不符,怎么解决?
healer_kx 2013-03-13
  • 打赏
  • 举报
回复
map的序列化,你只能把它contains的entry都store起来。 反序列化的时候就是读出来,重新insert。

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧