[問題] 物件放在vector做sort

看板C_and_CPP作者 (啊?)時間13年前 (2012/10/10 16:07), 編輯推噓0(008)
留言8則, 4人參與, 最新討論串1/1
我有爬過這篇文章 http://ppt.cc/0BJF 以及這一篇 http://ppt.cc/pWc6 其中我最好奇的是第二篇 他的寫法主要是(我節錄重點): class Foo { private: int age; public: .... int getAge(void) const {return age;} .... }; bool compareAge(Foo* foo1,Foo* foo2) { return foo1->getAge() < foo2->getAge(); } Foo foo1("A",10); Foo foo2("B",30); Foo foo3("C",5); vector foo_v; foo_v.insert(foo_v.end(),&foo1); foo_v.insert(foo_v.end(),&foo2); foo_v.insert(foo_v.end(),&foo3); sort(foo_v.begin(),foo_v.end(),compareAge); 當初找到這篇覺得很簡單, 就去試, 可是根本無效~ 而且其實他的語法也怪怪的(Vector那邊不是應該寫 vector<Foo> foo_v; ) 後來發現 參考第一篇文章 把comp的參數宣告成: bool compareAge( const Foo& foo1,const Foo& foo2) 但是這麼做,我也只能做到return foo1.age < foo2.age; 當然前提是把age放到public 究竟要如何才能做到 可以呼叫member function "getAge()"來做比較呢!? 第一篇文章講的我也在試...還沒成功~~~QQ 煩請大大解惑~ -- 在孤單 疲憊的夜裡 走出門外 看看浩瀚的星空 突然覺得 自己是無比的渺小 那些偏執 計較 是多麼的無聊 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.208.23

10/10 16:11, , 1F
用 operator<( const Foo& rhs ) const { ... }
10/10 16:11, 1F

10/10 16:14, , 2F
而且你直接寫 foo1.getAge() 也可以呀 @@
10/10 16:14, 2F

10/10 16:15, , 3F
getAge() const
10/10 16:15, 3F

10/10 16:18, , 4F
感謝樓上~我成功了XD
10/10 16:18, 4F

10/10 16:19, , 5F
我可以問為什麼嗎><
10/10 16:19, 5F

10/10 17:12, , 6F

10/10 17:14, , 7F
foo_v 是 std::vector<Foo *> 的資料型態
10/10 17:14, 7F

10/10 17:23, , 8F
感謝樓上~
10/10 17:23, 8F
文章代碼(AID): #1GTIpGMP (C_and_CPP)