当前位置:  开发笔记 > 编程语言 > 正文

在C++中持久化std :: map

如何解决《在C++中持久化std::map》经验,为你挑选了2个好方法。

您是否知道任何简单或简单的方法来使地图对象(来自STL库)持久化(即将其写入文件)以便以后在程序运行后可以恢复其状态?

谢谢你的帮助



1> coppro..:

我相信Boost Serialization库能够序列化std :: map,但标准库本身并没有提供任何手段.序列化是一个很棒的库,具有很多功能,易于使用并扩展到您自己的类型.



2> Eclipse..:

如果您想手动执行此操作,与保留任何其他容器结构的方式相同,请将各个部分写入磁盘:

outputFile.Write(thisMap.size());
for (map<...>::const_iterator i = thisMap.begin(); i != thisMap.end(); ++iMap)
{
    outputFile.Write(i->first);
    outputFile.Write(i->second);
}

然后阅读它们:

size_t mapSize = inputFile.Read();
for (size_t i = 0; i < mapSize; ++i)
{
    keyType key = inputFile.Read();
    valueType value = inputFile.Read();
    thisMap[key] = value;
}

显然,您需要根据地图类型和文件i/o库使工作正常.

否则尝试提升序列化,或google的新序列化库.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有