Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyusun Vektor Jenis Ditentukan Pengguna mengikut Pembolehubah Khusus?

Bagaimana untuk Menyusun Vektor Jenis Ditentukan Pengguna mengikut Pembolehubah Khusus?

Susan Sarandon
Susan Sarandonasal
2024-11-15 01:36:02158semak imbas

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 Isih Perpustakaan Standard

Isih perpustakaan standard boleh digunakan jika jenis yang ditentukan pengguna anda melaksanakan "pengendali bool < (Jenis const& lain-lain) 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;
    }
};

Menggunakan Fungsi Isih Tersuai

Sebagai alternatif, anda boleh menyediakan fungsi susunan tersuai atau functor sebagai argumen ketiga untuk mengisih() sebaliknya melaksanakan operator 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);

Pendekatan ini berguna apabila:

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

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!

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