2014-12-22 2 views
-3

C++을 사용하면 데이터를 파일에 저장하고 주소를 사용하여 데이터를 검색하여 더 빨리 액세스 할 수 있습니까? 필자는 대용량의 데이터 파일을 구문 분석하거나 반복 할 필요없이 해당 데이터의 하위 집합에 직접 액세스 할 수 있어야합니다. 답안에서 데이터 저장 방법은 중요하지 않습니다. 당신이 가진 대답에 가장 잘 맞는 것은 무엇이든합니다.주소로 데이터를 검색하는 방법 (C++)

+0

메모리에 저장하고 거기서 읽는 것을 의미합니까? 물론 가능합니다;) – dtech

+0

지정할 수 있습니까? –

+0

영구적으로 보관해야합니다. 하지만 주소 액세스를 위해 가상 메모리에로드 할 수 있습니까? –

답변

3

예. iostream을 사용한다고 가정하면 tellgtellp을 사용하여 각각 현재 가져 오기 및 가져 오기 (즉, 읽기 및 쓰기) 위치를 검색 할 수 있습니다. 나중에 같은 값을 다시 seekg 또는 seekp으로 보내면 동일한 위치로 돌아갈 수 있습니다 (각각 다시 읽기 또는 쓰기 용).

이들을 사용하여 (예를 들어) 파일에 색인을 생성 할 수 있습니다. 각 레코드를 기본 데이터 파일에 기록하기 전에 tellp을 사용하여 현재 위치를 검색하십시오. 그런 다음 데이터 파일에 데이터를 저장하고 tellp 값을 인덱스 파일에 저장합니다. 원하는 인덱스의 종류에 따라 일련의 위치가 포함될 수 있으므로 레코드가 다른 크기 인 경우에도 데이터 파일에서 #N을 직접 레코드 할 수 있습니다.

또는 색인 파일에 일부 키 필드의 데이터를 저장할 수 있습니다. 예를 들어, 사람들에 관한 일련의 레코드가있는 주요 데이터 파일이있을 수 있습니다. 그런 다음 여러 개의 색인을 만들 수 있습니다. 하나는성에 각각 위치하며, 다른 하나는 생일 및 위치를 포함하는 이름입니다. 따라서 이름이나 생일을 기준으로 검색 할 수 있습니다. people older than 18 with a last name starting with "M", "N" or "O"과 같은 것들을 지원하십시오.)

+0

사례를 통해 확장하는 데 관심이 있으십니까? – cybermonkey

+0

나는 이것을 조사 할 것이다. 그것은 내가 필요한 것 같습니다. 나는 그 말을 구글을 통해 대답을 찾을 권리가있다. 감사! –

+0

추가 설명을 주셔서 감사합니다. 이것은 완벽한 사람입니다, 정말 고맙습니다. –

관련 문제