2016-10-31 4 views
1

std :: map 부분 역 직렬화를 수행하는 방법이 있습니까? boost :: archive :: text_oarchive로 직렬화 한 다음 파일에 저장 했습니까? 예를 들어 키가 정수이고 값이 구조체 인 큰 일련 화 및 저장된 맵이 있는데 이제는 부품별로 다시 가져와야합니다 ... 첫 번째 100 개의 레코드를로드 한 후 다음 100 개의 레코드를로드하십시오 ... Are 어떤 libs, 부스트 클래스 또는 솔루션을 그것을 할 수 있습니까?std :: map의 부분 비 직렬화

+0

왜 이제 부품을 다시 가져와야합니까? 스레드를 묶지 않으려면 다른 스레드를 시작하고 완료 할 때 신호를 발생 시키십시오. – UKMonkey

+0

이제 직렬화 된 맵이 너무 커서 때때로 비 직렬화 할 때 문제가 발생합니다. 한 부분으로 기억에 넣어 라. – aleksssandr

+0

그럴 경우 Donghui가 대답을주었습니다. 역주를 변환 할 수있는 컴퓨터를 찾아 새로운 모듈 식 디자인과 일치하는 새로운 형식으로 다시 직렬화해야합니다. – UKMonkey

답변

1

일반적으로 동일한 serialize() 함수가 serialize 및 deserialize 모두 호출됩니다. 부품을 다시 가져 오려면 먼저 부품을 직렬화해야합니다.

+0

답변을 주셔서 감사합니다.하지만 불행히도 우리는 이미 커다란 직렬화 된 맵을 가지고 있으며, 이제는 한 부분으로로드하려고 할 때 문제가 발생합니다. – aleksssandr

+3

쉬운 해결책은 전체 맵을 deserialize하고 파트를 복사하는 것입니다. 하드 코어 솔루션은 직렬화 된 결과의 형식을 이해하는 것입니다.지도의 직렬화 방식과 키 및 값 유형의 직렬화 방식에 대한 소스 코드를 연구하고 특수 deserialize 함수를 작성하는 것이 좋습니다. 나는 그것이 가능하다고 믿지만, 나는 그 접근법을 선택하는 것을 강력하게 밀어 붙일 것이다. –

+1

저는 Donghui Zhang과 함께합니다 – sehe

관련 문제