Как сохранить карту STL в файл - PullRequest
2 голосов
/ 19 июля 2011

Можно ли сохранить карту STL в файл? и я могу загрузить файл на карту, чтобы сэкономить время. спасибо!

Ответы [ 3 ]

5 голосов
/ 19 июля 2011

Ну, вы можете сделать это вручную. Если нет, то самым простым способом было бы использовать 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 голос
/ 21 ноября 2013
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. Это работало нормально для меня.

Надеюсь, это поможет.

0 голосов
/ 19 июля 2011

Вы можете сделать это с сериализацией. Здесь вы можете найти учебник, объясняющий, как это сделать: http://www.functionx.com/cpp/articles/serialization.htm

Однако я не уверен, что это сэкономит вам время.

...