Rumah > pembangunan bahagian belakang > C++ > Mengapa saya mendapat 'tiada padanan untuk 'operator-' dalam '__last - __first'' apabila mengisih senarai dalam tertib menurun menggunakan isihan STL?

Mengapa saya mendapat 'tiada padanan untuk 'operator-' dalam '__last - __first'' apabila mengisih senarai dalam tertib menurun menggunakan isihan STL?

Patricia Arquette
Lepaskan: 2024-11-09 18:16:02
asal
951 orang telah melayarinya

Why am I getting

Isih Senarai dengan Fungsi Isih STL

Apabila mengisih senarai dalam tertib menurun menggunakan fungsi isihan STL, anda mungkin menghadapi ralat penyusunan jika senarai anda mengandungi item struct dan fungsi pembanding tidak ditakrifkan dengan betul. Ralat "tiada padanan untuk 'operator-' dalam '__last - __first'" menunjukkan bahawa fungsi isihan tidak dapat menentukan susunan elemen dalam senarai anda.

Isu timbul kerana fungsi isihan memerlukan iterator akses rawak, yang std::list::iterators tidak. Lelang senarai ialah lelaran dwiarah, yang tidak boleh mengira secara langsung perbezaan antara dua lelaran. Ini menghalang fungsi isihan daripada mengira dengan betul julat elemen yang hendak diisih.

Untuk menyelesaikan isu ini, anda harus menggunakan fungsi std::list::sort member dan bukannya std::sort fungsi. Fungsi std::list::sort menggunakan iterator dwiarah dan boleh mengendalikan pengisihan senarai yang mengandungi struct anda.

Berikut ialah contoh cara anda boleh menggunakan std::list::sort fungsi untuk mengisih senarai anda dalam tertib menurun:

Result.poly.sort([](const term& t1, const term& t2) { return t2.pow < t1.pow; });
Salin selepas log masuk

Fungsi pembanding tersuai ini akan mengisih senarai struct anda dengan betul dalam tertib menurun berdasarkan medan pow dalam setiap struct.

Atas ialah kandungan terperinci Mengapa saya mendapat 'tiada padanan untuk 'operator-' dalam '__last - __first'' apabila mengisih senarai dalam tertib menurun menggunakan isihan STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan