Rumah > Artikel > pembangunan bahagian belakang > Bolehkah Fungsi Isih Perpustakaan Standard Mengisih Jenis Ditakrifkan Pengguna Berdasarkan Medan Tertentu?
Isih Jenis Ditakrifkan Pengguna dengan Isih Perpustakaan Standard
Soalan:
Bolehkah standard fungsi isihan perpustakaan digunakan untuk mengisih vektor struct yang ditentukan pengguna berdasarkan medan tertentu dalam struct?
Contoh:
struct MyType { int a; int b; }; vector<MyType> moo; // Insert data into moo... // Sort moo by the value of the 'a' field
Jawapan :
Ya, fungsi isihan perpustakaan standard boleh mengendalikan senario ini jika jenis yang ditentukan pengguna memenuhi keperluan khusus:
Pelaksanaan:
struct MyType { int a; int b; bool operator<(const MyType& other) const { // Implementation that compares the 'a' fields } // Copy constructor MyType(const MyType& other) : a(other.a), b(other.b) { } // Other constructors... };
Pendekatan Alternatif Menggunakan Fungsi Pesanan:
Jika melebihkan pengendali perbandingan tidak boleh dilaksanakan, fungsi atau functor susunan boleh digunakan sebagai argumen ketiga kepada fungsi isihan.
bool type_is_less(const MyType& t1, const MyType& t2) { // Comparison logic } std::sort(c.begin(), c.end(), type_is_less);
Pendekatan ini boleh memberi manfaat dalam kes di mana:
Atas ialah kandungan terperinci Bolehkah Fungsi Isih Perpustakaan Standard Mengisih Jenis Ditakrifkan Pengguna Berdasarkan Medan Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!