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

感谢您的帮助

有帮助吗?

解决方案

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

其他提示

如果您想手动执行此操作,就像保留任何其他容器结构一样,请将各个部分写入磁盘:

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的新序列化库

答案是序列化。具体取决于您的需求和环境。首先,请查看Boost序列化库: http:/ /www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top