#include <iostream>
#include <vector>
#include <list>
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif
컴파일러는 말한다 "hash_map : 해당 파일이나 디렉토리 " 도움이 필요하십니까. 고맙습니다.맥 OSX에서 헤더를 hash_map 찾을 수 없습니다
#include <iostream>
#include <vector>
#include <list>
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif
컴파일러는 말한다 "hash_map : 해당 파일이나 디렉토리 " 도움이 필요하십니까. 고맙습니다.맥 OSX에서 헤더를 hash_map 찾을 수 없습니다
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>
를 사용하는 것을 선호합니다.
<hash_map>
헤더는 C++ 표준의 일부가 아니며 컴파일러 관련 구현입니다. 특정 시스템에서 찾을 수 있거나 각 시스템에서 발생하는 다양한 구현이 서로 상호 호환 될 수 있다고 보장 할 수는 없습니다.
C++에서 해시 맵을 사용하려는 경우 boost::unordered_map
, tr1::unordered_map
또는 프로토 타입 C++ 0x 컴파일러 구현 std::unordered_map
을 살펴볼 수 있습니다. 이러한 구현은 ISO 또는 Boost 커뮤니티에서 상당히 표준화되어 있으며 대부분의 C++ 컴파일러에 쉽게 설치할 수 있습니다. 저는 "다른 라이브러리를 사용하여이 코드를 다시 작성하십시오"라고 말하면서 나에게 다소 의문을 품고 있지만, C++이이 형식의 해시 컨테이너를 얻으려는 것은 아마도 가치있는 투자 일 것이라고 생각합니다.
"hash_map '이 (가)이 범위에서 선언되지 않았습니다. 여전히 가이드를 따른 후입니다. –
'네임 스페이스 __gnu_cxx; 또는'__gnu_cxx :: hash_map'사용 했습니까? –
감사합니다. 해결되었습니다. –