Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyusun Vektor Pasangan mengikut Elemen Kedua dengan Cekap?

Bagaimana untuk Menyusun Vektor Pasangan mengikut Elemen Kedua dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 13:47:24925semak imbas

How to Efficiently Sort a Vector of Pairs by the Second Element?

Cara Menyusun Vektor Pasangan Secara Cekap Mengikut Elemen Kedua Pasangan

Artikel ini membincangkan persoalan mengisih vektor pasangan berdasarkan elemen kedua setiap pasangan dalam tertib menaik. Semasa mencipta objek fungsi tersuai untuk tugas ini ialah penyelesaian yang berdaya maju, terdapat kaedah alternatif yang menggunakan komponen STL sedia ada dan std::less.

Menggunakan std::sort dengan Custom Comparator

Satu pendekatan ialah menggunakan pembanding tersuai sebagai hujah ketiga pilihan untuk std::sort. Pembanding tersuai ini, dipanggil sort_pred, ditakrifkan seperti berikut:

struct sort_pred {
    bool operator()(const std::pair<int,int> &amp;left, const std::pair<int,int> &amp;right) {
        return left.second < right.second;
    }
};

Untuk menggunakan pembanding ini, hantarkan sahaja ke std::sort:

std::sort(v.begin(), v.end(), sort_pred());

Menggunakan C 11 Lambdas

Jika menggunakan pengkompil C 11, anda boleh memanfaatkan lambdas sebagai ganti pembanding tersuai:

std::sort(v.begin(), v.end(), [](const std::pair<int,int> &amp;left, const std::pair<int,int> &amp;right) {
    return left.second < right.second;
});

Menggunakan Templat Generik untuk Isih Berpasangan

Untuk lebih fleksibiliti dan kebolehgunaan semula, anda boleh mencipta templat generik yang dipanggil sort_pair_second :

template <class T1, class T2, class Pred = std::less<T2> >
struct sort_pair_second {
    bool operator()(const std::pair<T1,T2>&amp;left, const std::pair<T1,T2>&amp;right) {
        Pred p;
        return p(left.second, right.second);
    }
};

Dengan templat ini, anda boleh mencapai pengisihan yang diingini sebagai berikut:

std::sort(v.begin(), v.end(), sort_pair_second<int, int>());

Atas ialah kandungan terperinci Bagaimana untuk Menyusun Vektor Pasangan mengikut Elemen Kedua dengan Cekap?. 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