정렬 기본적으로 내가 추적 코드를 바이너리 파일로 비트 세트를 쓰고 How does one store a vector<bool> or a bitset into a file, but bit-wise?C++ (A)의
후속 파일로 dynamic_bitset 저장 : 나는 동적 비트 세트의 방법을 사용
boost::dynamic_bitset<boost::dynamic_bitset<>::block_type> filter;
vector<boost::dynamic_bitset<>::block_type> filterBlocks(filter.num_blocks());
//populate vector blocks
boost::to_block_range(filter, filterBlocks.begin());
ofstream myFile(filterFilePath.c_str(), ios::out | ios::binary);
//write out each block
for (vector<boost::dynamic_bitset<>::block_type>::iterator it =
filterBlocks.begin(); it != filterBlocks.end(); ++it)
{
//retrieves block and converts it to a char*
myFile.write(reinterpret_cast<char*>(&*it),
sizeof(boost::dynamic_bitset<>::block_type));
}
myFile.close();
to_block_range를 임시 벡터에 넣은 다음 블록을 파일에 인쇄합니다. 그것은 작동하지만 중간 벡터를 사용할 때 (내 비트 세트와 동일한 크기의 벡터 사용) 내 메모리 사용량이 두 배가됩니다. 메모리 사용량을 두 배로 늘리지 않고 비트 세트를 파일로 인쇄하려면 어떻게해야합니까?
블록에서 비트 세트를 반복 할 수 있다면 좋겠지 만 다른 문제를 방지하기 위해 동적 비트 세트의 작성자는 의도적으로 이러한 종류의 기능을 생략했습니다. 다른 데이터 구조를 사용해야합니까? 컨텍스트에 도움이된다면 필자는 블룸 필터 코드에서 비트 세트를 사용하고 있습니다.
@Potatoswatter 예. 나는 더 분명해야했다. – cjustin