Mengisih Vektor Pasangan Berdasarkan Elemen Kedua
Memandangkan vektor pasangan, seseorang mungkin ingin menyusunnya dalam tertib menaik berdasarkan mereka elemen kedua. Semasa membina objek fungsi tersuai menyelesaikan tugas ini, mari kita terokai sama ada Perpustakaan Templat Standard (STL) memperkasakan kita dengan kaedah yang lebih mudah.
Menggunakan Pembanding Tersuai
Yang ketiga parameter std::sort membenarkan fungsi pembanding tersuai ditentukan. Kita boleh mentakrifkannya seperti berikut:
struct sort_pred { bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) { return left.second < right.second; } }; std::sort(v.begin(), v.end(), sort_pred());
Menggunakan Lambdas dalam C 11 dan Ke Atas
Dalam versi C 11 dan yang lebih baru, lambdas menawarkan alternatif yang padat:
std::sort(v.begin(), v.end(), [](const std::pair<int, int>& left, const std::pair<int, int>& right) { return left.second < right.second; });
Memanfaatkan Templat untuk Fleksibiliti
Untuk meningkatkan kebolehgunaan semula, seseorang boleh menentukan pembanding berasaskan templat:
template <class T1, class T2, class Pred = std::less<T2>> struct sort_pair_second { bool operator()(const std::pair<T1, T2>& left, const std::pair<T1, T2>& right) { Pred p; return p(left.second, right.second); } };
Ini membolehkan fleksibiliti yang lebih besar:
std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
Atas ialah kandungan terperinci Bagaimana Mengisih Vektor Pasangan Berdasarkan Elemen Keduanya dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!