Rumah > pembangunan bahagian belakang > C++ > Bolehkah Fungsi Isih Perpustakaan Standard Mengisih Jenis Ditakrifkan Pengguna Berdasarkan Medan Tertentu?

Bolehkah Fungsi Isih Perpustakaan Standard Mengisih Jenis Ditakrifkan Pengguna Berdasarkan Medan Tertentu?

Linda Hamilton
Lepaskan: 2024-11-11 12:13:03
asal
803 orang telah melayarinya

Can the Standard Library Sort Function Sort User-Defined Types Based on Specific Fields?

Isih Jenis Ditakrifkan Pengguna dengan Isih Perpustakaan Standard

Soalan:

Bolehkah standard fungsi isihan perpustakaan digunakan untuk mengisih vektor struct yang ditentukan pengguna berdasarkan medan tertentu dalam struct?

Contoh:

struct MyType {
    int a;
    int b;
};

vector<MyType> moo;

// Insert data into moo...

// Sort moo by the value of the 'a' field
Salin selepas log masuk

Jawapan :

Ya, fungsi isihan perpustakaan standard boleh mengendalikan senario ini jika jenis yang ditentukan pengguna memenuhi keperluan khusus:

  1. Beban Operator Perbandingan: Jenis mesti melaksanakan operator bool operator perbandingan yang terlebih beban<(const MyType& other) const untuk menentukan cara kejadian jenis itu dibandingkan.
  2. Pembina Salin: Pembina salinan (sama ada pengkompil- dijana atau tersuai) mesti wujud.

Pelaksanaan:

struct MyType {
    int a;
    int b;

    bool operator<(const MyType&amp; other) const {
        // Implementation that compares the 'a' fields
    }

    // Copy constructor
    MyType(const MyType&amp; other)
        : a(other.a), b(other.b) { }

    // Other constructors...
};
Salin selepas log masuk

Pendekatan Alternatif Menggunakan Fungsi Pesanan:

Jika melebihkan pengendali perbandingan tidak boleh dilaksanakan, fungsi atau functor susunan boleh digunakan sebagai argumen ketiga kepada fungsi isihan.

bool type_is_less(const MyType&amp; t1, const MyType&amp; t2) {
    // Comparison logic
}

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

Pendekatan ini boleh memberi manfaat dalam kes di mana:

  • Melebihi muatan operator perbandingan tidak diingini.
  • Jenis terbina dalam atau penuding perlu diisih.
  • Berbilang kriteria pengisihan diperlukan.

Atas ialah kandungan terperinci Bolehkah Fungsi Isih Perpustakaan Standard Mengisih Jenis Ditakrifkan Pengguna Berdasarkan Medan Tertentu?. 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