使用std::string作为std::map的key出错解决

清泛原创
c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2784: “bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)”: 未能从“const std::string”为“const std::_Tree<_Traits> &”推导 模板 参数
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xtree(2245) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(179): 编译类 模板 成员函数“bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const”时
1>          with
1>          [
1>              _Ty=std::string
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\map(177): 参见对正在编译的函数 模板 实例化“bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const”的引用
1>          with
1>          [
1>              _Ty=std::string
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\type_traits(743): 参见对正在编译的类 模板 实例化“std::less<_Ty>”的引用
1>          with
1>          [
1>              _Ty=std::string
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xtree(1028): 参见对正在编译的类 模板 实例化“std::is_empty<_Ty>”的引用
1>          with
1>          [
1>              _Ty=std::less<std::string>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\map(67): 参见对正在编译的类 模板 实例化“std::_Tree<_Traits>”的引用
1>          with
1>          [
1>              _Traits=std::_Tmap_traits<std::string,std::string,std::less<std::string>,std::allocator<std::pair<const std::string,std::string>>,false>
1>          ]
1>          c:\users\fstech\documents\visual studio 2012\projects\cpzj\cpzj\cpzj.cpp(95): 参见对正在编译的类 模板 实例化“std::map<_Kty,_Ty>”的引用
1>          with
1>          [
1>              _Kty=std::string,
1>              _Ty=std::string
1>          ]
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xtree(2245) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xtree(2245) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xtree(2245) : 参见“std::operator <”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2784: “bool std::operator <(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)”: 未能从“const std::string”为“const std::vector<_Ty,_Alloc> &”推导 模板 参数
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1726) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1726) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1726) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\vector(1726) : 参见“std::operator <”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2784: “bool std::operator <(const std::move_iterator<_RanIt> &,const std::move_iterator<_RanIt2> &)”: 未能从“const std::string”为“const std::move_iterator<_RanIt> &”推导 模板 参数
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1983) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1983) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1983) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1983) : 参见“std::operator <”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2784: “bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)”: 未能从“const std::string”为“const std::reverse_iterator<_RanIt> &”推导 模板 参数
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1259) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1259) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1259) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1259) : 参见“std::operator <”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2784: “bool std::operator <(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)”: 未能从“const std::string”为“const std::_Revranit<_RanIt,_Base> &”推导 模板 参数
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1075) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1075) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1075) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility(1075) : 参见“std::operator <”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2784: “bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)”: 未能从“const std::string”为“const std::pair<_Ty1,_Ty2> &”推导 模板 参数
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\utility(232) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\utility(232) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\utility(232) : 参见“std::operator <”的声明
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\utility(232) : 参见“std::operator <”的声明
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef(180): error C2676: 二进制“<”:“const std::string”不定义该运算符或到预定义运算符可接收的类型的转换



反正是乱七八糟的错误,原因很简单,少了 #include <string>  
(注意,不是string.h,如果包含了string.h,请改为string)

std::string std::map key

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部