2010-04-22 5 views
6

여러 키 조회를 수행 할 수있는 C++ 연관 맵 컨테이너 유형을 알고 있는지 궁금합니다. 지도에는 일정한 시간 조회가 있어야하지만 순서가 있거나 순서가 맞지 않아도 상관하지 않습니다. 그것은 단지 빠를 필요가 있습니다.다중 키 맵 (C++)

예를 들어 정수와 void *가있는지도에 일련의 std :: vector 객체를 조회 키로 저장하려고합니다. int와 void * 모두 내 벡터를 검색 할 때 일치해야합니다. 이것과 비슷한 것은 이미 존재합니까? 또는 나는 내 자신을 굴려야 할 것이다. 그렇다면 어떤 제안입니까? boost :: unordered_map을 다른 boost :: unordered_map에 저장하려고 시도했지만, 아직이 방법으로 성공하지 못했습니다. 어쩌면 나는 더 간단한 방법이 없다면이 방법을 계속 퍼싱 할 것이다. 감사!

답변

4

상수 조회에는 해시지도가 필요합니다. boost::unordered_map (또는 tr1)을 사용할 수 있습니다. 키는 int와 void 포인터의 combined hash이 될 것입니다.

+0

이것은 정확히 내가 찾고있는 것입니다. 감사! – Morgan

0

boost::multi_index을 사용할 수 있습니다.

(내가 실제로 원하는 것은 void *와 정수가 모두지도의 키로 포함 된 유형을 사용하는 것입니다. 둘 다에 대한 비교 연산자를 제공하기 위해 둘 다 원시 데이터를 비교하는 것입니다. 지도)

2

부스트를 사용하지 않으려면 map< int, map<void*, vector> >을 사용해보십시오. 그러나 조회는 O (로그 (맵 크기))입니다.