清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 1279|回复: 0
打印 上一主题 下一主题

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

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2016-05-06 10:10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    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)


    评分

    参与人数 1小红花 +10 收起 理由
    zqp2013 + 10 赞一个!

    查看全部评分

    清泛网 - 专注IT技能提升
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-11-22 11:33 , Processed in 0.019272 second(s), 35 queries .