如何将STL映射保存到文件

时间:2011-07-19 00:06:58

标签: file stl map

是否可以将STL地图保存到文件?我可以加载文件来映射以节省时间。谢谢!

3 个答案:

答案 0 :(得分:5)

嗯,你可以手动完成。如果没有,最简单的方法是使用boost.serialization,它支持所有标准容器:

std::ofstream ofs("output_file");

// create class instance
std::map<int,string> whatever;

// populate map.

// save data to archive
{
    boost::archive::text_oarchive oa(ofs);
    // write map instance to archive
    oa << whatever;
    // archive and stream closed when destructors are called
}

您可以看到反向如何工作(从存档中读取),以及您还可以使用二进制存档。 (你也需要一堆包含,但你可以从文档中获得这些。)

答案 1 :(得分:1)

template<class A, class B>
void fn SaveMap(std::map<A, B>& savethismap)
{
  ofstream tfStream("filename");
  tfStream << savethismap.size() << std::endl;
  typedef std::pair<const A, B>& pr;
  BOOST_FOREACH(pr p, savethismap)
  {
     tfStream >> p.first << std::endl << p.second << std::endl;
  }
  tfStream.close();
}

这可以节省一切。我模仿这只是为了你可以专攻,我尝试使用A:std :: string和B:int。它对我来说很好。

希望它有所帮助。

答案 2 :(得分:0)

您可以通过序列化来完成。在这里,您可以找到解释如何操作的教程: http://www.functionx.com/cpp/articles/serialization.htm

但是,我不确定它是否会节省你的时间。