Mengisih Jenis Ditentukan Pengguna dengan Perpustakaan Standard
Apabila mengisih koleksi jenis data yang ditentukan pengguna, pengaturcara selalunya perlu menyesuaikan menyusun tertib berdasarkan medan atau sifat tertentu dalam jenis tersebut. Soalan ini meneroka sama ada kefungsian pengisihan perpustakaan standard boleh menampung pengisihan tersuai sedemikian.
Menggunakan Isih Standard
Pustaka standard menyediakan kaedah isihan yang membolehkan pengisihan unsur dalam bekas. Kaedah ini secara dalaman memanggil < operator untuk menentukan pesanan. Untuk memanfaatkan isihan standard bagi jenis yang ditentukan pengguna, jenis anda perlu melaksanakan < operator untuk mentakrifkan pesanan yang diingini.
Sebagai contoh, pertimbangkan struct MyType:
struct MyType { int a; int b; };
Untuk mengisih vektor MyType berdasarkan medan a menggunakan isihan standard, anda akan melaksanakan < operator seperti berikut:
bool operator < (const MyType& other) const { return this->a < other.a; }</p> <p>Dengan pelaksanaan ini, anda kemudian boleh mengisih vektor menggunakan:</p> <pre class="brush:php;toolbar:false">std::sort(moo.begin(), moo.end());
Menggunakan Fungsi Pesanan Tersuai
Sebagai alternatif, bukannya melaksanakan < operator, anda boleh lulus fungsi pesanan tersuai sebagai hujah ketiga kepada kaedah isihan. Fungsi ini mengembalikan boolean yang menunjukkan perhubungan susunan antara dua elemen.
Sebagai contoh, untuk mengisih berdasarkan medan b MyType:
bool compareByB(const MyType& t1, const MyType& t2) { return t1.b < t2.b; }
Anda kemudian akan menggunakan isihan sebagai:
std::sort(moo.begin(), moo.end(), compareByB);
Pendekatan ini membolehkan lebih fleksibiliti dalam menentukan susunan pengisihan, terutamanya apabila berbilang kriteria pesanan diperlukan.
Atas ialah kandungan terperinci Bolehkah Anda Mengisih Jenis Ditentukan Pengguna dengan Perpustakaan Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!