免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3398 | 回复: 2
打印 上一主题 下一主题

[C++] vs 2008 需要打补丁? 这个怎么编译不过呢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-20 23:23 |只看该作者 |倒序浏览
如下的代码:

  1. // The ID class is used for team scoring. It holds each player's name
  2. // and score.
  3. class ID
  4. {
  5. public:
  6.     string Name;
  7.     int Score;

  8.     ID() : Name(""), Score(0) {}
  9.     ID(string NewName, int NewScore) : Name(NewName), Score(NewScore) {}
  10. };

  11. // In this example, an ID is equivalent only if both name and score match.
  12. bool operator==(const ID& x, const ID& y)
  13. {
  14.     return (x.Name == y.Name) && (x.Score == y.Score);
  15. }

  16. // IDs will be sorted by Score, not by Name.
  17. bool operator<(const ID& x, const ID& y)
  18. {
  19.     return x.Score < y.Score;
  20. }

  21. // Define a template class for a vector of IDs.
  22. typedef vector<ID> NAMEVECTOR;
复制代码
  1. NAMEVECTOR Vector1;
  2. Vector1.push_back(ID("Karen Palmer", 2));
  3.     Vector1.push_back(ID("Ada Campbell", 1));

  4. // Sort the vector of players by score.
  5.         // !!!!!  something going wrong here.
  6.     sort(Vector1.begin(), &Vector1[Vector1.size()]);
复制代码
编译的时候提示:
1>        error C2780: “void std::sort(_RanIt,_RanIt,_Pr)”: 应输入 3 个参数,却提供了 2 个
1>        e:\program files\microsoft visual studio 9.0\vc\include\algorithm(3273) : 参见“std::sort”的声明

1>        error C2782: “void std::sort(_RanIt,_RanIt)”: 模板 参数“_RanIt”不明确
1>        e:\program files\microsoft visual studio 9.0\vc\include\algorithm(3110) : 参见“std::sort”的声明
1>        可能是“ID”
1>        或       “std::_Vector_iterator<_Ty,_Alloc>”
1>        with
1>        [
1>            _Ty=ID,
1>            _Alloc=std::allocator<ID>
1>        ]

不知道啥意思呢.... 貌似是说不能匹配的,但这些代码在vc6是没有任何问题的.

大家帮忙看看啊 !

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
2 [报告]
发表于 2010-02-21 01:51 |只看该作者
C++要求sort前2个参数即迭代器类型相同。
C++并不要求sort处理类型不同的情况。

VC6的stl实现对此开了一个小门, 不代表所有C++和stl实现都会如此。

  1. sort(Vector1.begin(), &Vector1[Vector1.size()]);

  2. // 改为
  3. sort(v.begin(), v.end() );
  4. // 或者
  5. sort(&v[0], &v[v.size()] );
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-02-21 09:33 |只看该作者
感谢! 搞定了!

怪不得好多人在说VC6支持标准C++不咋地呢。这么多毛病.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP