> saat ini saya sedang berada dalam lingkungan m$ memakai vis c++ 6.0. 
> Nah di msdn nya disebutkan bahwa list.sort nya diganti dengan 
> void sort(greater<T> pr). Kira2 bagaimana ya Mas solusinya?

Ah, Visual C++ :-(

Salah satu caranya adalah kembali menggunakan sort() yang biasa, tanpa
argument apa-apa, tapi overload saja operator< di kelas CData,
kira-kira seperti ini (harus ditambahkan di deklarasi kelasnya):

  bool operator>(const CData& cd) const { return m_price > cd.m_price; }

Ini adalah cara yang "standar".

Kalau mau masih memakai "predicate", coba yang ini (enggak janji
jalan, soalnya belum dites compile di VC++):

template<> struct std::greater<CData>
{
  int mode;

  greater( int m ) : mode(m) {}

   bool operator()( const CData& c1, const CData&c2 )
   { return c1.m_price>c2.m_price; }

}; 

Terus dipanggilnya:  l.sort( greater<CData>(0) );

Kenapa ada mode? Ini supaya satu predicate 'greater' itu bisa
digunakan untuk sort berdasarkan key yang berbeda-beda (mungkin price,
mungkin vol). Contoh di atas, modenya kita isikan sembarang (=0)
karena di implementasi (lihat overload untuk operator() ) variabel
mode ini diabaikan sewaktu melakukan perbandingan.

Bisa dilihat, kelebihan cara "predicate" ini adalah dimungkinkannya
sorting dengan banyak kriteria, tidak hanya satu kriteria seperti cara
"standar" sebelumnya.


-- 
http://www.google.com/search?q=ariya+hidayat&btnI

--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis

Kirim email ke