C++ 汎用アルゴリズムは、次のような一般的な操作を再利用できます。 並べ替えアルゴリズム (sort など) 検索アルゴリズム (find など) 設定操作 (set_difference など) 変換アルゴリズム (transform など) 汎用アルゴリズムを使用する場合は、入力コンテナーを提供する必要があります。コンテナー (オプション) と関数オブジェクトをパラメーターとして出力します。たとえば、並べ替えアルゴリズムを使用して、整数の配列を並べ替えることができます。カスタム コンパレータを使用すると、特定のルールに従ってデータを並べ替えることができます。実際のケースでは、std::max_element アルゴリズムを使用してコンテナ内の最大値を見つけることができ、コードの単純さと保守性が向上します。
C++ 汎用アルゴリズム: コード再利用のための強力なツール
C++ 標準ライブラリは強力な汎用アルゴリズムを提供し、プログラマーが一般的な操作を再利用し、コードを繰り返し記述するトラブルを回避できます。これらのアルゴリズムはテンプレートとして提供されており、さまざまなデータ型に適用できます。
アルゴリズムのカテゴリ
標準ライブラリの汎用アルゴリズムは、次のいくつかのカテゴリに分類できます:
sort
や stable_sort
など) li>sort
和 stable_sort
)find
和 binary_search
)set_difference
和 set_intersection
)transform
和 copy
)使用方法
使用泛型算法很简单。只需传递一个输入容器、一个输出容器(如果需要)和一个 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::sort
的 Comparator
参数。
例如,以下代码使用 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
検索アルゴリズム (find
や binary_search
など)
set_difference
や set_intersection< など) /code>) </li><p>変換アルゴリズム (<code>transform
や copy
など)🎜使用法🎜🎜🎜汎用アルゴリズムの使用は次のとおりです。単純。入力コンテナ、出力コンテナ (必要な場合)、および 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 }
Comparator
パラメータ。 🎜🎜たとえば、次のコードは、ラムダ式を使用して、数値を逆順に並べ替えるカスタム コンパレータを定義します。 🎜rrreee🎜🎜 実践例: 最大値を見つける 🎜🎜🎜 生徒の成績のリストがあり、その最高値を見つける必要があると仮定します。最大。 std::max_element
アルゴリズムを使用できます: 🎜rrreee🎜 汎用アルゴリズムを活用することで、独自の最大値検索関数を作成する必要がなく、標準ライブラリのコードを再利用できます。コードの単純さと保守性が向上します。 🎜以上がC++ の汎用アルゴリズムは関数をどのように再利用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。