線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:891
推到 Plurk!
推到 Facebook!

有關stl的list的排序問題

尚未結案
balado
一般會員


發表:14
回覆:6
積分:4
註冊:2003-12-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-20 03:34:14 IP:140.115.xxx.xxx 未訂閱
假如說我有宣告一個 class MapRect {    public:      int a;      int b; }    list temp; 我想要將temp內的元素排序,但是根據b的大小 我有查過書,可是temp.sort(CompFunc op) ↑不懂這個function object要怎麼撰寫 我有嘗試過 bool a(MapRect &m1, MapRect &m2) { return (m1.returnb2()>m2.returnb2()); } temp.sort(a); 這樣他卻說 error C2664: 'void __thiscall std::list >::sort(struct std::greater)' : cannot convert parameter 1 from 'class std: :binder2nd >' to 'struct std::greater' No constructor could take the source type, or constructor overload resolution was ambiguous 請問該如何撰寫 function object??
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-20 04:26:26 IP:211.76.xxx.xxx 未訂閱
balado你好:    我試過以下的碼,是可以通過Compiler的。你的問題在那?  
 
#include 
using namespace std;
class MapRect
{
   public:
     int a;
     int b;
};    bool a(MapRect &m1, MapRect &m2)
{
  return (m1.b > m2.b);
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
list temp;    temp.sort(a);
}
還有發表程式碼時要加上縮格,不然有些符號會看不到。(見左上角紅字的提醒)
balado
一般會員


發表:14
回覆:6
積分:4
註冊:2003-12-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-20 16:09:10 IP:140.115.xxx.xxx 未訂閱
對不起喔!我用的是visual c 6.0版,不過用bcb可以過嘛? 對不起沒有事先說清楚,可是我這樣寫在vC過不了,難道是VC不支援這樣的寫法嗎? 謝謝高手再次為小弟賜教
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-20 19:31:22 IP:211.76.xxx.xxx 未訂閱
balado你好: 我在Microsoft Visual Studio 的Visual C 測式是可以通過的。至於VC 6.0,他已經太老舊了,許多標準語法都不能用,要更新了吧。
系統時間:2024-06-02 9:19:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!