2008-09-26 6 views
8

지도 객체 (STL 라이브러리에서)를 영구적으로 만드는 (즉, 파일에 쓰는) 쉽고 간단한 방법을 알고 있으므로 나중에 프로그램을 다시 시작할 때 상태를 복구 할 수 있습니다 나중에 실행에서 ??C++에서 std :: map의 지속성

덕분에 당신의 도움

답변

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

분명히,지도 유형 및 파일 I/O 라이브러리에 따라 작업을해야합니다.

그렇지 않으면 boost serialization 또는 google's new serialization library을 시도하십시오.