#include <iostream>
#include <vector>
#include <list>
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif
编译器说“的hash_map:没有这样的文件或目录 ” 需要帮助。谢谢。不能在Mac OSX找到了hash_map头
#include <iostream>
#include <vector>
#include <list>
#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif
编译器说“的hash_map:没有这样的文件或目录 ” 需要帮助。谢谢。不能在Mac 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'”。 – 2011-02-09 22:29:00