Сохранение std::map в C ++
-
02-07-2019 - |
Вопрос
Знаете ли вы какой-нибудь простой способ сделать объект 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