繁体   English   中英

在Mac OSX下找不到hash_map标头

[英]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_maptr1::unordered_map或原型C ++ 0x编译器的std::unordered_map 这些实现由ISO或Boost社区完全标准化,并且可以轻松地安装在大多数C ++编译器上。 我知道仅仅说“使用不同的库重写此代码”对我来说有点冒昧,但考虑到C ++即将获得这种形式的哈希容器,这可能是值得的投资。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM