是否可以将STL地图保存到文件?我可以加载文件来映射以节省时间。谢谢!
答案 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
但是,我不确定它是否会节省你的时间。