stl在vc6中的有关问题

stl在vc6中的问题
#include   "stdafx.h "
#include   <map>
#include   <string>
using   namespace   std;
int   main(int   argc,   char*   argv[])
{
map <string,string>   map1;
string   str1   =   "A ";
string   str2   =   "1 ";
map1.insert(map <string,string> ::value_type(str1,   str2));
printf( "Hello   World!\n ");
return   0;
}
以上代码在vc6中编译会飘出90个警告,vc7和vc8就没问题,为什么?vc6对stl支持的不好?

------解决方案--------------------
加一句
#pragma warning(disable:4786)

------解决方案--------------------
vc6对模板的支持不够好. 所有这些警告信息都是warning C4786, 一个标识符的长度超过255. 大概MS当初在开发VC6的时候觉得255字节已够用,没想到很多模板展开以后的长度很容易就超出了.不过这个warning错误只影响debug查看变量值时的显示,对程序运行不会有影响.你如果很讨厌这类warn信息,可在cpp文件第一行(在所有include <...> 之前)加上这一句:

#pragma warning(disable: 4786)

编译时就不会报这类警告了.
btw, 总觉得你程序中这一句很别扭:

map1.insert(map <string,string> ::value_type(str1, str2));

既然是map, 可以用简捷的标准用法:

map1[str1] = str2;