【问题标题】:Persistence of std::map in C++C++ 中 std::map 的持久性
【发布时间】:2008-09-26 03:47:18
【问题描述】:

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

感谢您的帮助

【问题讨论】:

    标签: c++ map persistence


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果你想手动完成,就像你持久化任何其他容器结构一样,将各个部分写到磁盘:

      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 serialization,或google's new serialization library

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-01-13
          • 2014-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多