C++中调用STL库的hash_map为什么有warning

程序如下#include<fstream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath... 程序如下
# include <fstream>
# include <cstdio>
# include <cstdlib>
# include <cstring>
# include <cmath>
# include <iomanip>
# include <algorithm>
# include <vector>
# include <deque>
# include <list>
# include <map>
# include <hash_map>
using namespace std ;
int main ()
{
freopen ( "hash.in" , "r" , stdin ) ;
freopen ( "hash.out" , "w" , stdout ) ;
return 0 ;
}

warning 如下

编译器TDM-GCC 4.6.1-32bit
编辑器DEV-C++ 5.3.0.1
展开
 我来答
wanglixin1001
2012-10-17 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:850万
展开全部
hash_map不属于C++标准容器,只是SGI C++ STL的扩展容器,所以#include <hash_map>会报上述warning。建议在DEV-C++下使用#include <hash_map.h>。
当然,通用的做法如下代码:
#if defined(__GNUC__)
# if __GNUC__ < 3 && __GNUC__ >= 2 && __GNUC_MINOR__ >= 95
# include <hash_map>
# elif __GNUC__ >= 3
# include <ext/hash_map>
# else
# include <hash_map.h>
# endif
#elif defined(__MSVC_VER__)
# if __MSVC_VER__ >= 7
# include <hash_map>
# else
# error "std::hash_map is not available with this compiler"
# endif
#elif defined(__sgi__)
# include <hash_map>
#else
# error "std::hash_map is not available with this compiler"
#endif
在FreeBSD系统,Linux系统下和Windows系统下都能通用。
不过你不需要这么复杂咯,dev-c++使用#include <hash_map.h>就好了。
追问
尼玛这么复杂,对于我这个NOIPER来说好像实在是。。难以理解。谢谢咯~对于GCC编译器写# include 行吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志远823
2012-10-17 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1165万
展开全部
提示说的很清楚了,你的用的这个STL头文件里包含了一些已经不在维护的代码,将来会被去掉。也请你不要用这些代码。你用的STL可能版本有点老
追问
= = 好吧,但是DEV-C++已经是最新版本了呀~
追答
楼下说的是对的,hash的确不是标配的STL容器,但仅仅是名义上的,否则也不会一起打包了。我在VC2008试了包含#include ,但VC没有任何警告提示。这个警告是DEVC++的STL头文件里的编译指令打出来的,只能说明它的STL有潜在的不稳定问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ul0402206
2012-10-18 · TA获得超过505个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:301万
展开全部
在你自己生成的.h文件中加入 # progma once
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式