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
Lepaskan: 2024-12-09 13:47:24
asal
928 orang telah melayarinya

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;
    }
};
Salin selepas log masuk

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

std::sort(v.begin(), v.end(), sort_pred());
Salin selepas log masuk

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;
});
Salin selepas log masuk

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);
    }
};
Salin selepas log masuk

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

std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
Salin selepas log masuk

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!

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