STL,map 错误:error C2784

一、错误现象:使用map,自定义的类型作为key,出现错误error C2784

      error C2784: “bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)”: 未能从“const CDpMysqlConnAttr”为“const    std::basic_string<_Elem,_Traits,_Alloc> &”推导 模板 参数
      1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\string(243) : 参见“std::operator <”的声明


二、原因:

      map中的key默认是以less<>升序对元素排序,也就是说key必须具备operator<对元素排序。


      平常我们用的基本上都是基本类型元素作为key,不存在这个问题。

      当使用自定义类型或者类,作为key时,如果没有自定义operator<,就会出现该错误。


三、解决办法:

      修改作为key的类型,添加operator<。

你可能感兴趣的:(STL,map 错误:error C2784)