2008-09-26 4 views
8

Знаете ли вы простой или простой способ сделать объект карты (из библиотеки STL) постоянным (т.е. записать его в файл), чтобы вы могли восстановить его состояние позже, когда программа в перспективе позже ??Сохранение std :: map в C++

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

ответ

11

Я считаю, что Boost Serialization библиотека способна сериализацией зОго :: карты, но сам стандартная библиотека не предоставляет средств. Сериализация - отличная библиотека с множеством функций и проста в использовании и распространяется на собственные типы.

10

Если вы хотите сделать это вручную, так же, как вы бы упорствовать любую другую структуру контейнера, выписывать отдельные части на диск:

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; 
} 

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

В противном случае попробуйте boost serialization, или google's new serialization library.

Смежные вопросы