读书人

map容器里面定义了 maplt;gt;mapped_type

发布时间: 2012-02-27 10:00:22 作者: rapoo

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

读书人网 >C++

热点推荐