Rumah > Artikel > pembangunan bahagian belakang > Mengapakah `std::sort` Gagal Mengisih `std::list` Struktur?
Isih Senarai dengan Fungsi Isih STL: Isu Pelaksanaan
Apabila cuba mengisih senarai struktur menggunakan fungsi std::sort , anda mungkin menghadapi ralat kompilasi yang menunjukkan operator hilang-. Ralat ini timbul apabila pembanding yang dibekalkan, SortDescending, beroperasi pada elemen std::list, yang menyokong iterator dwiarah dan bukannya iterator akses rawak yang diperlukan oleh std::sort.
Untuk menyelesaikan isu ini, bukannya menggunakan std::sort, gunakan std::list<>::fungsi ahli sort, yang direka untuk mengendalikan senarai secara khusus. Berikut ialah kod yang diubah suai menggunakan std::list<>::sort:
Result.poly.sort(SortDescending());
Perhatikan bahawa fungsi ahli std::list<>::sort juga memerlukan fungsi pembanding. Pembanding SortDescending kekal tidak berubah:
struct SortDescending { bool operator()(const term& t1, const term& t2) { return t2.pow < t1.pow; } };
Dengan menggunakan std::list<>::sort dengan SortDescending comparator, anda boleh berjaya mengisih senarai anda dalam tertib menurun berdasarkan ahli 'pow' struktur 'istilah'.
Atas ialah kandungan terperinci Mengapakah `std::sort` Gagal Mengisih `std::list` Struktur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!