[英]Cannot find hash_map header under Mac OSX
#include <iostream>
#include <vector>
#include <list>
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif
编译器说“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 ++即将获得这种形式的哈希容器,这可能是值得的投资。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.