84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
c++ 中怎么将hash_map 存储到文件中 这个牵扯到序列化和反序列化 有做过这方面的大神吗?据说boost 库提供了一个 方法 但是查到的资料很少。有谁有这方面的资料 共享下 谢谢!!!
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
只要能遍历 hash_map,就可以序列化,而一般集合类数据结构都是可以遍历的,hash_map 也不例外
通过 hash_map 对象的 size() 方法取得项数,写入流, 通过 hash_map::iterator 遍历 hash_map 对象,依次将 key 和 value 写入流。
size()
读取的时候产生一个 hash_map 对象, 先读取数量,然后按这个数量进行一个 for 循环, 依次读入 key 和 value 对,并插入到刚才的 hash_map 对象中
for
如果考虑第三方的库,推荐google的protobuf,可直接将hash_map对象序列化后存储;
不知道你的数据规模还有hash_map的修改频次啊,我就说说我现在的情况和实现吧 我的map大概几千到几万项,增删改都不频繁,持久化做到共享内存里。 所以共享内存的结构就定义了一个struct,里面就是key和value。程序运行时对map的增删改全部转化为对共享内存的写,程序重启的时候从共享内存里读出所有的项,重新形成map。
只要能遍历 hash_map,就可以序列化,而一般集合类数据结构都是可以遍历的,hash_map 也不例外
序列化
通过 hash_map 对象的
size()
方法取得项数,写入流,通过 hash_map::iterator 遍历 hash_map 对象,依次将 key 和 value 写入流。
反序列化
读取的时候产生一个 hash_map 对象,
先读取数量,然后按这个数量进行一个
for
循环,依次读入 key 和 value 对,并插入到刚才的 hash_map 对象中
如果考虑第三方的库,推荐google的protobuf,可直接将hash_map对象序列化后存储;
不知道你的数据规模还有hash_map的修改频次啊,我就说说我现在的情况和实现吧
我的map大概几千到几万项,增删改都不频繁,持久化做到共享内存里。
所以共享内存的结构就定义了一个struct,里面就是key和value。程序运行时对map的增删改全部转化为对共享内存的写,程序重启的时候从共享内存里读出所有的项,重新形成map。