ホームページ >バックエンド開発 >C++ >C++sort 関数を正しく使用してカスタマイズされた並べ替え関数を実装する方法

C++sort 関数を正しく使用してカスタマイズされた並べ替え関数を実装する方法

王林
王林オリジナル
2024-04-02 18:09:02653ブラウズ

sort 関数は、カスタム比較関数を使用して、カスタマイズされた並べ替えを実装します。比較関数を作成し、並べ替えルールを指定し、パラメーターの種類と戻り値を定義します。 sort 関数を呼び出します。カスタム比較関数を 3 番目のパラメーターとして渡して、コンテナー内の要素を並べ替えます。例: 整数を降順に並べ替え、文字列をカスタム ルール (空の文字列が最初、長さが最初、辞書順) に従って並べ替えます。

C で sort 関数を使用してカスタマイズされた並べ替え関数を実装する方法

sort 関数は、C 標準ライブラリの重要な関数であり、使用されます。並べ替える コンテナ内の要素が並べ替えられます。参照による比較関数を受け取り、ユーザーがカスタム基準に基づいて要素を並べ替えることができます。

比較関数の構文

比較関数の構文は次のとおりです:

bool compare(const T1& a, const T2& b);

そのうち:

  • ##T1 T2 は、比較される要素のタイプです。
  • 戻り値
  • true は、ab より小さいことを意味します。
  • 戻り値
  • false は、ab 以上であることを意味します。

カスタム ソートの実装

sort 関数を使用してカスタム ソートを実装するには、カスタム比較関数を作成する必要があります。並べ替え動作を指定します。以下に例を示します:

#include <algorithm>
#include <vector>

using namespace std;

bool compareIntsDescending(int a, int b) {
  return a > b;
}

int main() {
  vector<int> numbers = {1, 5, 2, 4, 3};

  sort(numbers.begin(), numbers.end(), compareIntsDescending);

  for (auto& num : numbers) {
    cout << num << " ";
  }
  cout << endl;

  return 0;
}

このプログラムの出力:

5 4 3 2 1

この例では、

compareIntsDescending 比較関数が整数を大きい値から小さい値に変換します。 。

実践的なケース: カスタム ルールによる文字列の並べ替え

文字列の配列があり、次のルールに従って並べ替えるとします。

    空の文字列が最初にソートされます。
  • 長い文字列が最初にソートされます (長さが同じ場合はアルファベット順)。
この機能を実現するには、次の比較関数を作成できます:

bool compareStrings(string a, string b) {
  // 检查是否为空字符串
  if (a.empty() && !b.empty()) {
    return true;
  } else if (!a.empty() && b.empty()) {
    return false;
  }

  // 空字符串相等
  if (a.empty() && b.empty()) {
    return false;
  }

  // 比较长度
  if (a.length() < b.length()) {
    return true;
  } else if (a.length() > b.length()) {
    return false;
  }

  // 长度相同时按字母顺序比较
  return (a < b);
}

この比較関数を使用して、次のように文字列配列を並べ替えることができます:

#include <algorithm>
#include <vector>

using namespace std;

int main() {
  vector<string> strings = {"apple", "banana", "cherry", "dog", "cat", ""};

  sort(strings.begin(), strings.end(), compareStrings);

  for (auto& str : strings) {
    cout << str << " ";
  }
  cout << endl;

  return 0;
}

このプログラムの出力:

 dog cat apple banana cherry

以上がC++sort 関数を正しく使用してカスタマイズされた並べ替え関数を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。