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 就可以了 。