您是否知道任何简单或简单的方法可以使映射对象(来自 STL 库)持久化(即将其写入文件),以便稍后在程序运行时恢复其状态?
谢谢你的帮助
我相信Boost 序列化库能够序列化 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 库来进行工作。
答案是序列化。具体取决于您的需求和环境。对于初学者,请查看 Boost 序列化库: http: //www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html