<p>カスタム コンパレーターの実装は、クラスを作成し、2 つのパラメーターを受け取り、比較結果を示す Operator() をオーバーロードすることで実現できます。たとえば、StringLengthComparator クラスは、文字列の長さを比較して文字列を並べ替えます。クラスを作成し、operator() をオーバーロードして、比較の結果を示すブール値を返します。コンテナアルゴリズムでの並べ替えにカスタムコンパレータを使用する。カスタム コンパレータを使用すると、カスタム比較基準を使用する必要がある場合でも、カスタム基準に基づいてデータを並べ替えたり比較したりできます。 </p>
<p><img src="https://img.php.cn/upload/article/000/000/000/171755945021187.jpg" alt="如何在 C++ STL 中实现定制的比较器?"></p>
<p><strong>C++ STL でカスタム コンパレーターを実装するにはどうすればよいですか? </strong></p>
<p>C++ 標準テンプレート ライブラリ (STL) は、強力なコンテナーとアルゴリズムのセットを提供しており、その一部には 2 つの要素を比較する方法が必要です。デフォルトでは、STL アルゴリズムは比較に演算子 <code><</code> を使用しますが、カスタムの比較基準を使用する必要がある場合があります。ここでカスタム コンパレータが役に立ちます。 <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>カスタム コンパレータの実装</p>
<p><strong> カスタム コンパレータは、<code>operator()</code> をオーバーロードするクラスであり、2 つのパラメータを受け入れ、最初のパラメータが小さいか、等しいか、または等しいかを示すブール値を返します。 2 番目の引数より大きい。たとえば、文字列を長さに基づいて比較するコンパレータを定義してみましょう: </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>実践例</p>🎜🎜 <code>std::vector</code> 内の文字列にこのコンパレータを使用してみましょう。 長さで並べ替えます: 🎜<pre class='brush:php;toolbar:false;'>cat dog apple cherry banana</pre>🎜Output : 🎜rrreee🎜🎜結論🎜🎜🎜 カスタム コンパレータを実装すると、カスタム比較基準が必要な場合でも、STL アルゴリズムを使用してデータを簡単かつ効率的に並べ替えたり比較したりできます。 🎜
以上がC++ STL でカスタム コンパレータを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。