清泛IT社区
标题:
使用std::string作为std::map的key出错解决
[打印本页]
作者:
清泛网
时间:
2016-05-06 10:10
标题:
使用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)
欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/)
Powered by Discuz! X3.3