Вопрос

Знаете ли вы какой-нибудь простой способ сделать объект map (из библиотеки STL) постоянным (т.е.записать его в файл), чтобы вы могли восстановить его состояние позже, когда программа будет запущена позже??

Спасибо за вашу помощь

Это было полезно?

Решение

Я верю, что Ускорьте Сериализацию библиотека способна сериализовать 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;
}

Очевидно, что вам нужно будет заставить все работать в зависимости от вашего типа карты и библиотеки файлового ввода-вывода.

В противном случае попробуйте ускорьте сериализацию, или новая библиотека сериализации Google.

Ответ - сериализация.Особенности зависят от ваших потребностей и вашего окружения.Для начала ознакомьтесь с библиотекой сериализации Boost: http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/index.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top