> 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