作者yoco315 (眠月)
看板C_and_CPP
標題Re: [問題] stl priority_queue less<MyClass*> ?
時間Thu Nov 26 01:47:30 2009
簡單的方法是用 boost Pointer Container Library
http://www.boost.org/doc/libs/1_35_0/libs/ptr_container/doc/reference.html
┌────────────────────────────────────┐
|boost::ptr_vector<MyClass> pv ; // declare with non-pointer type │
|pv.push_back(new MyClass(...)) ; // push with pointer │
|pv[0].func() ; // use as reference │
|pv.sort() ; // sort with MyClass's < operator │
└────────────────────────────────────┘
另外一個方案是寫個泛型的 pointer comparing adaptor,以後可以複用。
┌────────────────────────────────────┐
|template < typename T > │
|struct LessByDereference { │
| bool operator < () (const T * const a, const T * const b) const { │
| return *a < *b ; │
| } │
|} ; │
|std::vector<MyClass> v ; │
|std::sort(v.begin(), v.end(), LessByDereference<MyClass>()) ; │
└────────────────────────────────────┘
不過我不知道上面的 code 有沒有錯,所以不要照抄 =,=
--
ㄍㄊㄇㄉ半夜一點半外面還有人大吵大鬧吵的我睡不著只好起來爬文 = =
老天保佑那個男的明天出門給車撞死,算了,半死不活就好,
如果他是程式設計師保佑他遇到海森堡蟲,法客遊。
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.115.106
→ nowar100:已經進化成有背景版的code了 XD 11/26 01:55
→ yoco315:不喜歡置底那個配色,所以自己用python自己寫了一個 /.\ 11/26 02:08
→ yoco315:用古早 Turbo C++ 的配色,加上跟 TC++ 一樣的邊框.. 11/26 02:08
推 VictorTom:果然是TC++的配色, 而且竟然是自己寫的....Orz 11/26 14:12
→ yoco315:很簡單阿 XD 程式碼才 8x 行.. 要的話我可以貼 XD 11/26 20:32
推 VictorTom:什麼!?寫出這樣的程式還只要8x行程式碼....OTZ 11/26 22:03
※ yoco315:轉錄至看板 Test 11/26 23:14