首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

map容器里面定义了 map<>mapped_type 吗?解决办法

2012-02-27 
map容器里面定义了map::mapped_type吗?map容器里面定义了map ::mapped_type吗?为什么我在VC里找不到

map容器里面定义了 map<>::mapped_type 吗?
map容器里面定义了     map <> ::mapped_type     吗?
为什么我在VC里找不到这个定义


[解决办法]
那是因为 VC6 比 C++98 标准要早,所以有些地方不支持标准。如mapped_type这个名字。
在VC8(VS2005)中,是这么定义的:

typedef _Ty mapped_type;
typedef _Ty referent_type;// retained

其中第一个mapped_type是为了符合标准,第二个referent_type则是为了兼容用VC6写的代码,所以加了 "retained "注释。

建议尽量写符合标准的代码,以便兼容其他的编译器。
如果还是用VC6,建议用宏替换,类似这样:
#define _COMPILER_VC6 // 这个可以放在编译选项中: /D "_COMPILER__VC6 "

#ifdef _COMPILER_VC6 // for VC6
#define mapped_type referent_type
#endif

代码中还是mapped_type,以后不使用VC6,不定义_COMPILER_VC6 就可以了 。

热点排行