ID 값이 unsigned int
입니다. Id를 포인터에 매핑해야합니다. 일정 시간.정수 식별자를 포인터로 변환
키 배포 :
ID는 UINT_MAX 0의 범위의 값을가집니다. 대부분의 키는 단일 그룹으로 묶이지 만 이상 치가 있습니다.
구현 :
은 내가 C++ 내선 hash_map 물건을 사용하는 방법에 대한 생각,하지만 난 키가 거대한 잠재력 범위가있을 때 성능이 너무 크지 않다 들었습니다.
나는 또한 일련의 체인 된 룩업 (반복적으로 C 덩어리로 범위를 세분하는 것에 해당)을 사용하려고 생각했습니다. 범위에 키가 없으면 해당 범위는 NULL을 가리 킵니다.
N = 주요 범위
(C = 16으로 분할하므로 16 개) 등급 0 = 0/16 N), N/16, 2 * (N/16)), .. .
레벨 1 ... = (C = 16로 그래서 16 개 * 16 조각을 나누어)
다른 사람이이 매핑을보다 효율적으로 구현할 수있는 방법에 대한 아이디어가 있습니까?
업데이트 :
일정으로, 난 그냥 크게 항목의 값의 번호로 영향을받지 각 키 조회를 의미했다. 나는 그것이 하나의 작전이어야한다는 것을 의미하지는 않았다.
또한 메모리 사용을 최소화하십시오 (위의 체인 조회와 유사 함). 크기가 KEY_RANGE 인 배열을 제안하지 마십시오.) – jameszhao00