CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  工具平台和程序库

关于sort()的问题

楼主zerray(阿然)2003-11-01 14:58:52 在 C/C++ / 工具平台和程序库 提问

class   A  
  {  
      public:  
          int   a,b;  
  };  
  class   B  
  {  
      public:  
          double   m,n;  
  }  
  map<A,B>   c;  
  ...  
   
  我想把c分别按a,b,m,n的大小排序,该怎么做呀?sort(c.begin(),c.end(),???);  
  问题点数:50、回复次数:11Top

1 楼ttlb(__ttlb__ttlb__小鸟)回复于 2003-11-01 15:19:35 得分 15

做一个函数对象,类似于:  
  template   <typename   T>  
  class   Compare  
  {  
  public:  
      int   Compare()(T   &lhs,   T   &rhs)  
      {  
          if   (lhs   <   rhs)   return   -1;  
          else   if   (lhs   >   rhs)   return   1;  
          else   return   0;  
      }  
  };Top

2 楼zerray(阿然)回复于 2003-11-01 15:25:40 得分 0

还是不太明白,能具体点吗?怎么才能让sort知道按A还是B的成员排序?Top

3 楼xiaonian_3654(你猜猜(我要打光棍,小乔嫁不了))回复于 2003-11-01 16:32:28 得分 0

哎,不要偷懒啊,  
  先把基本的练好了再说  
  自己写一写排序,多练Top

4 楼boxban(冻酸梨)回复于 2003-11-01 16:49:00 得分 35

//按照a排序  
   
  struct   sortAa{  
      bool   operator()(const   map<A,B>::const_iterator&   l,   const   map<A,B>::const_iterator&   r)   const  
      {  
            return   (l->first.a   <   r->first.a);  
      }  
  };  
   
  sort(c.begin(),c.end(),sortAa());Top

5 楼Andy84920(你也不懂)回复于 2003-11-01 17:18:40 得分 0

这个问题不错.  
  建议写出完整程序!Top

6 楼cxjddd(又是花开时)回复于 2003-11-01 23:08:52 得分 0

呵呵,用   set   怎么样?Top

7 楼WindFroce(半支烟)回复于 2003-11-02 01:18:59 得分 0

大哥,程序写的不好呀,数据应该作为私有的Top

8 楼killme6115(下下雪)回复于 2003-11-02 02:33:33 得分 0

markTop

9 楼zerray(阿然)回复于 2003-11-02 10:30:10 得分 0

to   WindForce:  
  其实我是想用struct的:)Top

10 楼zerray(阿然)回复于 2003-11-02 10:39:04 得分 0

#include<iostream>  
  #include<map>  
  #include<algorithm>  
  using   namespace   std;  
  struct   A{  
      int   a,b;  
  };  
  struct   B{  
      double   c,d;  
  };  
  struct   sortAa{  
      bool   operator()(const   map<A,B>::const_iterator&   l,   const   map<A,B>::const_iterator&   r)   const  
      {  
            return   (l->first.a   <   r->first.a);  
      }  
  };  
   
  int   main()  
  {  
      map<A,B>   c;  
      A   a1,a2;  
      B   b1,b2;  
      cin>>a1.a>>a1.b>>a2.a>>a2.b;  
      cin>>b1.c>>b1.d>>b2.c>>b2.d;  
      c.insert(make_pair(a1,b1));  
      c.insert(make_pair(a1,b2));  
      c.insert(make_pair(a2,b1));  
      c.insert(make_pair(a2,b2));  
      sort(c.begin(),c.end(),sortAa());  
  }  
   
  这个程序在我的编译器上怎么不能通过编译呢?  
  1332   F:\Dev-Cpp\include\g++-3\stl_algo.h  
  no   match   for   `_Rb_tree_iterator<pair<const   A,B>,pair<const   A,B>   &,pair<const   A,B>   *>   &   -   _Rb_tree_iterator<pair<const   A,B>,pair<const   A,B>   &,pair<const   A,B>   *>   &'  
  884   F:\Dev-Cpp\include\g++-3\stl_tree.h  
      instantiated   from   `_Rb_tree<A,pair<const   A,B>,_Select1st<pair<const   A,B>   >,less<A>,allocator<B>   >::insert_unique(const   pair<const   A,B>   &)'  
  Top

11 楼zerray(阿然)回复于 2003-11-10 20:39:58 得分 0

没人回答我结贴了啊!Top

相关问题

  • sort
  • sort id
  • ADOQuery Sort
  • Distinct Sort
  • 关于list::sort()和sort的问题
  • who>sort和who/sort有什么区别
  • How to write sql script to Sort?
  • sort命令求助
  • Javascript的Sort函数?
  • stl的sort(pr)怎么用

关键词

  • 排序
  • sortaa
  • pair
  • sort
  • iterator
  • tree
  • const
  • insert
  • rb
  • map

得分解答快速导航

  • 帖主:zerray
  • ttlb
  • boxban

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo