Bagaimana untuk Menyusun Vektor Jenis Ditentukan Pengguna mengikut Pembolehubah Khusus?

Susan Sarandon
Lepaskan: 2024-11-15 01:36:02
asal
219 orang telah melayarinya

How to Sort a Vector of User-Defined Types by Specific Variables?

Isih Jenis Ditakrifkan Pengguna dalam Vektor mengikut Pembolehubah Tertentu

Untuk mengisih vektor jenis yang ditentukan pengguna mengikut pembolehubah tertentu , anda mempunyai dua pilihan: menggunakan isihan perpustakaan standard atau melaksanakan fungsi isihan anda sendiri.

Menggunakan Isihan Perpustakaan Standard

Isihan perpustakaan standard boleh digunakan jika anda jenis yang ditentukan pengguna melaksanakan "operator bool < (Const Type& other) const" dan pembina salinan. Operator perbandingan harus menentukan cara yang bermakna untuk membandingkan jenis. Berikut ialah contoh:

struct MyType {
    int a;
    int b;
    bool operator<(const MyType& other) const {
        // Compare types based on a specific variable (e.g., a)
        return a < other.a;
    }
};
Salin selepas log masuk

Menggunakan Fungsi Isih Tersuai

Sebagai alternatif, anda boleh menyediakan fungsi susunan tersuai atau functor sebagai argumen ketiga untuk mengisih() sebaliknya melaksanakan pengendali perbandingan. Fungsi ini harus membandingkan jenis berdasarkan pembolehubah yang dikehendaki. Contohnya:

bool type_is_less(const MyType& t1, const MyType& t2) {
    return t1.a < t2.a;
}

std::sort(moo.begin(), moo.end(), type_is_less);
Salin selepas log masuk

Pendekatan ini berguna apabila:

  • Anda tidak boleh atau tidak mahu melaksanakan pengendali perbandingan.
  • Anda perlu mengisih terbina -dalam atau jenis penuding yang tidak boleh terlebih beban.
  • Anda mahu mengisih urutan menggunakan kriteria berbeza pada masa yang berbeza.

Atas ialah kandungan terperinci Bagaimana untuk Menyusun Vektor Jenis Ditentukan Pengguna mengikut Pembolehubah Khusus?. 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