Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `std::sort` Gagal Mengisih `std::list` Struktur?

Mengapakah `std::sort` Gagal Mengisih `std::list` Struktur?

Linda Hamilton
Linda Hamiltonasal
2024-11-10 22:00:03531semak imbas

Why Does `std::sort` Fail to Sort a `std::list` of Structures?

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&amp; t1, const term&amp; 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn