2011-02-09 4 views

답변

12

MacOSX에서 올바른 헤더는 <ext/hash_map>이 아니며 <hash_map>입니다. 여기 괜찮 았는데 :

#if defined __GNUC__ || defined __APPLE__ 
#include <ext/hash_map> 
#else 
#include <hash_map> 
#endif 

int main() 
{ 
     using namespace __gnu_cxx; 

     hash_map<int, int> map; 
} 

을 그건 그렇고, 내가 <tr1/unordered_map>를 사용하는 것을 선호합니다.

+0

"hash_map '이 (가)이 범위에서 선언되지 않았습니다. 여전히 가이드를 따른 후입니다. –

+0

'네임 스페이스 __gnu_cxx; 또는'__gnu_cxx :: hash_map '사용 했습니까? –

+0

감사합니다. 해결되었습니다. –

5

<hash_map> 헤더는 C++ 표준의 일부가 아니며 컴파일러 관련 구현입니다. 특정 시스템에서 찾을 수 있거나 각 시스템에서 발생하는 다양한 구현이 서로 상호 호환 될 수 있다고 보장 할 수는 없습니다.

C++에서 해시 맵을 사용하려는 경우 boost::unordered_map, tr1::unordered_map 또는 프로토 타입 C++ 0x 컴파일러 구현 std::unordered_map을 살펴볼 수 있습니다. 이러한 구현은 ISO 또는 Boost 커뮤니티에서 상당히 표준화되어 있으며 대부분의 C++ 컴파일러에 쉽게 설치할 수 있습니다. 저는 "다른 라이브러리를 사용하여이 코드를 다시 작성하십시오"라고 말하면서 나에게 다소 의문을 품고 있지만, C++이이 형식의 해시 컨테이너를 얻으려는 것은 아마도 가치있는 투자 일 것이라고 생각합니다.

관련 문제