4. 블룸 필터의 생성자를 추가합니다.
public:
bloom_filter(int n) : nBits(n)
{
data = std::vector<bool>(nBits, false);
}
5. 룩업 함수를 추가합니다.
void lookup(int key)
{
bool result = data[hash(0, key)] & data[hash(1, key)] & data[hash(2, key)];
if (result)
{
std::cout << key << ": 있을 수 있음" << std::endl;
}
else
{
std::cout << key << ": 절대 없음" << std::endl;
}
}
lookup() 함수 구현은 매우 간단합니다. 이 함수는 필요한 모든 비트가 1로 설정되어 있는지를 검사합니다. 만약 가변 개수의 해시 함수를 사용한다면, 각각의 해시 함수와 연관된 비트가 모두 1로 설정되어 있는지를 반복문을 통해 확인하면 됩니다. 특정 키가 ‘있을 수 있음’이라고 출력하는 이유는 거짓-긍정이 발생할 수 있기 때문입니다. 반면에 result 값이 0인 경우에는 입력 키가 없음이 확실하기 때문에 ‘절대 없음’을 출력합니다.