2010-06-23 3 views
2

여러 곳에서 STL은 해시 테이블 및 공용 데이터 구조를 제공하지 않는다는 것을 읽었습니다. 다른 기존 STL 데이터 구조를 사용하여 이들을 어떻게 구현할 수 있습니까? 당신의 해시 테이블에 대한C++ STL이 해시 테이블과 공용 구조체를 제공하지 않는 이유는 무엇입니까?

+0

C++에서'hashmap' 구현에 관심이있을 수 있습니다 : http://epsilon-delta.net/code/hashmap.html –

+0

일반 구조체와 다른 점은 무엇입니까? – Rup

+0

또한보십시오 http://stackoverflow.com/questions/2460387/hash-table-v-s-stl-map-in-c – Clifford

답변

8

이 해시 맵에 대한 std::tr1::unordered_map을 시도 ...이 필요합니다. std :: map은 정렬되어 있으므로 해시만큼 효율적이지는 않습니다. 유니온 데이터 구조가 무엇인지 알 수는 없지만 C++에서 유니온 구조체를 가질 수 있습니다.

EDIT : 또한 여러 가지 해시 맵 구현이 많이 있습니다. 부스트는 unordered map이고 Prasoon은 질문에 1 개를 언급했으며 Google은 sparsehash입니다.

1

해보십시오 표준 : :지도

+2

'std :: map'는 실제로 해시 테이블이 아닌 이진 트리입니다. SB가 말했듯이'unordered_map'은 해시 테이블입니다. (기술적으로, 표준은 맵을 구현하는 방법을 지정하지 않지만, 표준에 의해 지정된 제약 조건은 2 진 트리를 의미합니다. 이것은 분명히 가장 일반적인 구현입니다. –

+4

이것은 트리 기반이며 해시와 다른 성능 특성을 갖습니다 테이블 (조회는 트리의 경우 로그 시간이고 해시 테이블의 경우 일정 시간입니다.) C++ 0x는 해시 테이블을 기반으로 'unordered_map'을 도입했습니다. 일부 구현체는 원래 STL의 일부 였지만 표준 라이브러리에 포함되지 않은'hash_map '을 제공 할 수 있습니다. –

+0

좋은 점, 감사합니다 :-) – Protostome

관련 문제