로딩
요청 처리 중입니다...

std::map을 사용한 검색 최적화의 아이디어

 std::map을 사용한 검색 최적화의 아이디어

unsigned val = table["zulu"]; 위와 같이 C 스타일 문자열로 map에서 검색을 한다고 가정해봅시다. 이렇게 할 경우 모든 검색 작업이 char* 문자열 리터럴을 std::string으로 다시 변환하느라 메모리를 할당해야 하며, 이 과정에서 비용이 발생을 하게 됩니다.

그리고 string을 다시 파괴해야하는 과정을 거쳐야 합니다. 즉 보이지 않는 리소스가 생성, 파괴가 이루어지게 됩니다.

만약 키의 최대 길이가 그리 길지 않다면, char 배열이 포함된 클래스 타입을 키 타입으로 사용할 수 있습니다. std::map table; 하지만 이건 실제로 사용이 불가능합니다. 일단 배열 타입에 대한 내장되어 있는 비교 연산자(<, ==)가 존재하지 않기 때문입니다.

그렇다면 결국 이 일을 대신 처리해줄 클래스가 필요하게 됩니다. template struct charbu...