Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pembanding tersuai dalam C++ STL?

Bagaimana untuk melaksanakan pembanding tersuai dalam C++ STL?

PHPz
PHPzasal
2024-06-05 11:50:45263semak imbas
<p>Melaksanakan pembanding tersuai boleh dicapai dengan mencipta kelas dan operator beban lampau(), yang menerima dua parameter dan menunjukkan hasil perbandingan. Sebagai contoh, kelas StringLengthComparator mengisih rentetan dengan membandingkan panjangnya: Buat kelas dan operator beban lampau (), mengembalikan nilai Boolean yang menunjukkan hasil perbandingan. Menggunakan pembanding tersuai untuk mengisih dalam algoritma bekas. Pembanding tersuai membolehkan kami mengisih atau membandingkan data berdasarkan kriteria tersuai, walaupun kami perlu menggunakan kriteria perbandingan tersuai. </p> <p><img src="https://img.php.cn/upload/article/000/000/000/171755945021187.jpg" alt="如何在 C++ STL 中实现定制的比较器?"></p> <p><strong>Bagaimana untuk melaksanakan pembanding tersuai dalam C++ STL? </strong></p> <p>Pustaka Templat Standard (STL) C++ menyediakan set bekas dan algoritma yang berkuasa, beberapa daripadanya memerlukan cara untuk membandingkan dua elemen. Secara lalai, algoritma STL menggunakan operator <code><</code> untuk perbandingan, tetapi kadangkala kita perlu menggunakan kriteria perbandingan tersuai. Di sinilah pembanding tersuai berperanan. <code><</code> 进行比较,但有时我们需要使用自定义的比较标准。这就是定制比较器发挥作用的地方。</p> <p><strong>实现定制比较器</strong></p> <p>定制比较器是一个类,它重载了 <code>operator()</code>,该操作符接受两个参数并返回布尔值,指示第一个参数是否小于、等于或大于第二个参数。例如,让我们定义一个用于根据字符串长度比较字符串的比较器:</p><pre class='brush:cpp;toolbar:false;'>class StringLengthComparator { public: bool operator()(const std::string& a, const std::string& b) const { return a.length() < b.length(); } };</pre><p><strong>实战案例</strong></p> <p>让我们使用此比较器对 <code>std::vector</code></p> <p>Melaksanakan pembanding tersuai</p> <p><strong>Pembanding tersuai ialah kelas yang melebihkan <code>operator()</code>, yang menerima dua parameter dan mengembalikan nilai Boolean yang menunjukkan sama ada parameter pertama Kurang daripada, sama dengan, atau lebih besar daripada hujah kedua. Sebagai contoh, mari kita takrifkan pembanding untuk membandingkan rentetan berdasarkan panjangnya: </strong><pre class='brush:cpp;toolbar:false;'>#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<std::string> strings = {"apple", "banana", "cherry", "dog", "cat"}; // 使用定制比较器排序 StringLengthComparator comparator; std::sort(strings.begin(), strings.end(), comparator); // 打印排序后的字符串 for (auto& s : strings) { std::cout << s << " "; } return 0; }</pre></p> <p>Contoh Praktikal</p>🎜🎜Mari kita gunakan pembanding ini untuk rentetan dalam <code>std::vector</code> Isih mengikut panjang: 🎜O<pre class='brush:php;toolbar:false;'>cat dog apple cherry banana</pre>🎜 : 🎜rrreee🎜🎜Kesimpulan🎜🎜🎜Dengan melaksanakan pembanding tersuai, kami boleh menggunakan algoritma STL untuk mengisih atau membandingkan data dengan mudah dan cekap, walaupun jika kriteria perbandingan tersuai diperlukan. 🎜

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pembanding tersuai dalam C++ STL?. 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