CH13-1 빠른 탐색을 보이는 해시 테이블(2)
이번에는 테이블을 코드 레벨에서 살펴보겠다.
회사의 직원정보를 대강 담은 구조체를 하나 만들었다.
우리가 보통 오해하는게.. 테이블에서 key와 value를 분리해서 생각하지만, 사실 value중 일부를 뽑아 key를 만들거나 그 중 일부를 아예 key로 활용하는 경우도 있다.
key를 결정할때 제일 중요한건 다른게 아니라 중복되지만 않으면 된다는 점임
key와 value를 억지로 구분할 필요는 없다!!
우리는 위의 구조체가 담고있는 데이터 중 직원의 고유번호(사번)을 key로 사용하겠다.
여기서 주목할건… 직원 사번을 배열 인덱스 삼아서 배열에 저장하고 있다는 것임!
이러면 우리는 사번을 0~999개 사용할 수 있다. 물론 이게 썩 좋아보이진 않는다. 어차피 앞으로 우리가 할게 이런 문제들을 해결하는 것임.
여기서 중요한건, key를 배열의 index로 활용했다는 점이다!
앞으로는 키(인덱스)만 있다면 데이터(구조체)에 바로 접근할 수 있다.
위에서 테이블을 배열을 기반으로 했다고 해서 오해할만한게, 그럼 리스트를 기반으로 하는 테이블도 있을까? 싶지만… 테이블의 단번에 탐색하는 장점은 바로 배열을 기반으로 했기 때문이다. 연결리스트를 기반으로 하는 테이블을 생각해보라. 탐색하는데 시간이 겁나 오래걸릴게 뻔하다…
그래서 테이블은 기본적으로 배열을 기반으로 한다고 생각하면 편하다.