本文共 680 字,大约阅读时间需要 2 分钟。
在linux下的hash_map
hash_map本身以前本身不属于标准库,是后来引入的.有两种可能:一种可能它被放在了stdext名空间里,那么你就要使用using namespace stdext 引入该名空间并#include <hash_map>;.另一种可能就是它被反在了标准库的ext目录底下,仍旧属于std名空间这时你的源文件应当包含头文件#include <ext/hash_map>;如果不知道的话.可以使用切换到你的stl库目录底下cd /usr/include/c++/版本然后grep -iR "hash_map" ./查看在哪个文件中.一般头文件的最后几行会提示它所述的名空间. |
- #ifndef _HASH_MAP
- #define _HASH_MAP 1
-
- #include <ext/hashtable.h>;
- #include <bits/concept_check.h>;
-
-
- namespace __gnu_cxx //这儿说明它属于__gnu_cxx名空间.
- {
- using std::equal_to;
- using std::allocator;
- ........
复制代码 我的头文件如上,所以它是属于__gnu_cxx名空间.加上using namespace __gnu_cxx就可以了.看你的头文件是什么,这几个模板本身就是在各个STL库实现都不一样.看一下源文件,在引入相应的名空间就可以了. |
转载于:https://www.cnblogs.com/ghost240/p/3788036.html