더북(TheBook)

  4. 삽입 함수를 추가합니다.

void insert(uint value)
{
    int n = data.size();
    data[value % n].push_back(value);
    std::cout << value << "을(를) 삽입했습니다." << std::endl;
}

위 코드는 value 값을 항상 해시 맵에 추가합니다. 원한다면 해시 맵에 value 값이 이미 있는지를 먼저 확인한 후, 없는 경우에만 추가하는 형태로도 구현할 수 있습니다.

  5. 특정 원소가 해시 맵에 있는지를 확인하는 룩업 함수를 추가합니다.

bool find(uint value)
{
    int n = data.size();
    auto& entries = data[value % n];
    return std::find(entries.begin(), entries.end(), value) != entries.end();
}

이 룩업 함수는 아무래도 이전 구현보다는 살짝 느립니다. 이 함수는 단순히 n 값에만 영향을 받는 것이 아니라 입력 데이터에 대해서도 영향을 받습니다. 이 부분에 대해서는 연습 문제 이후에 다시 언급하겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.