2010-03-03 2 views
0

C++에서 데이터 구조 (예 : 트리, 그래프)를 영구 보존하는 방법은 무엇입니까?C++에서 데이터 구조를 영속화하는 방법은 무엇입니까?

+1

'Boost.serialization'? – kennytm

+5

'지속'이란 무엇입니까? 디스크에 쓰는 것을 의미합니까? 그것이 생성 된 기능이 종료 된 후에도 계속 살아 있습니까? 다른 것? –

+0

기능적 언어의 경우와 같이 불변의 영구 데이터 구조를 의미한다고 생각했을 것입니다. –

답변

3

일반적으로 파일이나 데이터베이스에 쓸 수 있도록 구조를 serialize해야합니다. 사용자 정의 구조가있는 경우 직렬화 및 직렬화 해제 (즉, 구조체에 쓰기 및 읽기) 할 메소드를 작성해야합니다. 그렇지 않으면 라이브러리의 구조를 사용한 경우 이미 직렬화 메소드가있을 수 있습니다.

예 : 연결된 목록은 다음과 같은 문자열로 serialize 될 수 있습니다. [1,2,3,4,5]

1
struct S { 
    /* ... */ 
}; 

//... 

ofstream out("temp.aux"); 

S s; 

char* c = reinterpret_cast<char*>(&s); 
out << sizeof(s); 
for(int i = 0; i < sizeof(s); ++i) { 
    out << c[i]; 
} 
out.close(); 

// ... 

ifstream in("temp.aux"); 
int size; 
in >> size; 
char* r = new char[size]; 
for(int i = 0; i < size; ++i) { 
    in >> r[i]; 
} 
S* s = reinterpret_cast<S*>(r); 
in.close(); 

신속하고 더러운 = D