ホームページ  >  記事  >  バックエンド開発  >  C++ の汎用アルゴリズムは関数をどのように再利用しますか?

C++ の汎用アルゴリズムは関数をどのように再利用しますか?

王林
王林オリジナル
2024-06-05 19:41:001071ブラウズ

C++ 汎用アルゴリズムは、次のような一般的な操作を再利用できます。 並べ替えアルゴリズム (sort など) 検索アルゴリズム (find など) 設定操作 (set_difference など) 変換アルゴリズム (transform など) 汎用アルゴリズムを使用する場合は、入力コンテナーを提供する必要があります。コンテナー (オプション) と関数オブジェクトをパラメーターとして出力します。たとえば、並べ替えアルゴリズムを使用して、整数の配列を並べ替えることができます。カスタム コンパレータを使用すると、特定のルールに従ってデータを並べ替えることができます。実際のケースでは、std::max_element アルゴリズムを使用してコンテナ内の最大値を見つけることができ、コードの単純さと保守性が向上します。

C++ 中的泛型算法是如何复用功能的?

C++ 汎用アルゴリズム: コード再利用のための強力なツール

C++ 標準ライブラリは強力な汎用アルゴリズムを提供し、プログラマーが一般的な操作を再利用し、コードを繰り返し記述するトラブルを回避できます。これらのアルゴリズムはテンプレートとして提供されており、さまざまなデータ型に適用できます。

アルゴリズムのカテゴリ

標準ライブラリの汎用アルゴリズムは、次のいくつかのカテゴリに分類できます:

  • 並べ替えアルゴリズム (sortstable_sort など) li>sortstable_sort
  • 搜索算法(例如 findbinary_search
  • 集合操作(例如 set_differenceset_intersection
  • 转换算法(例如 transformcopy)

使用方法

使用泛型算法很简单。只需传递一个输入容器、一个输出容器(如果需要)和一个 function 对象作为参数即可。

例如,以下代码使用 sort 算法对整数数组排序:

#include <algorithm>

int main() {
  int myArray[] = {4, 1, 3, 2};
  std::sort(std::begin(myArray), std::end(myArray));

  for (int i : myArray) {
    std::cout << i << " ";  // 输出:1 2 3 4
  }
}

自定义比较器

对于需要根据自定义比较器进行排序的情况,可以使用泛型算法 std::sortComparator 参数。

例如,以下代码使用 lambda 表达式定义自定义比较器,以逆序排序数字:

#include <algorithm>

int main() {
  int myArray[] = {4, 1, 3, 2};
  std::sort(std::begin(myArray), std::end(myArray), [](int a, int b) { return a > b; });

  for (int i : myArray) {
    std::cout << i << " ";  // 输出:4 3 2 1
  }
}

实战案例:查找最大值

假设我们有一个学生成绩列表,需要找出最大值。我们可以使用 std::max_element検索アルゴリズム (findbinary_search など)

集合演算 (set_differenceset_intersection) <p>変換アルゴリズム (<code>transformcopy など)

🎜使用法🎜🎜🎜汎用アルゴリズムの使用は次のとおりです。単純。入力コンテナ、出力コンテナ (必要な場合)、および function オブジェクトを引数として渡すだけです。 🎜🎜たとえば、次のコードは sort アルゴリズムを使用して整数の配列を並べ替えます: 🎜
#include <algorithm>
#include <vector>

int main() {
  std::vector<int> scores = {85, 90, 78, 95, 82};
  int maxScore = *std::max_element(scores.begin(), scores.end());
  std::cout << "最高分:" << maxScore;  // 输出:95
}
🎜🎜Custom Comparator🎜🎜🎜 カスタム コンパレータに基づいて並べ替える必要がある場合は、一般的なアルゴリズムstd::sort の Comparator パラメータ。 🎜🎜たとえば、次のコードは、ラムダ式を使用して、数値を逆順に並べ替えるカスタム コンパレータを定義します。 🎜rrreee🎜🎜 実践例: 最大値を見つける 🎜🎜🎜 生徒の成績のリストがあり、その最高値を見つける必要があると仮定します。最大。 std::max_element アルゴリズムを使用できます: 🎜rrreee🎜 汎用アルゴリズムを活用することで、独自の最大値検索関数を作成する必要がなく、標準ライブラリのコードを再利用できます。コードの単純さと保守性が向上します。 🎜

以上がC++ の汎用アルゴリズムは関数をどのように再利用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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