Bolehkah Anda Mengisih Jenis Ditentukan Pengguna dengan Perpustakaan Standard?

Barbara Streisand
Lepaskan: 2024-11-11 11:39:03
asal
124 orang telah melayarinya

Can You Sort User-Defined Types with the Standard Library?

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

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

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

Anda kemudian akan menggunakan isihan sebagai:

std::sort(moo.begin(), moo.end(), compareByB);
Salin selepas log masuk

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!

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