84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
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。