Algoritma generik C++ boleh menggunakan semula operasi biasa, termasuk: algoritma pengisihan (seperti isihan) algoritma carian (seperti cari) operasi set (seperti set_difference) algoritma penukaran (seperti transformasi) Apabila menggunakan algoritma generik, anda perlu menyediakan bekas input dan bekas keluaran (pilihan) dan objek fungsi sebagai parameter. Sebagai contoh, algoritma isihan boleh digunakan untuk mengisih tatasusunan integer. Pembanding tersuai boleh digunakan untuk mengisih data mengikut peraturan tertentu. Dalam kes praktikal, algoritma std::max_element boleh digunakan untuk mencari nilai maksimum dalam bekas, meningkatkan kesederhanaan dan kebolehselenggaraan kod.
C++ Generic Algorithm: Alat yang berkuasa untuk penggunaan semula kod
Pustaka standard C++ menyediakan algoritma generik yang berkuasa, membolehkan pengaturcara menggunakan semula operasi biasa dan mengelakkan masalah menulis kod berulang kali. Algoritma ini disediakan sebagai templat dan boleh digunakan pada pelbagai jenis data.
Kategori algoritma
Algoritma generik dalam perpustakaan standard boleh dibahagikan kepada beberapa kategori:
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
Algoritma carian (seperti cari
dan binary_search
)
set_difference
dan set_intersection< /code>) </li><p>Algoritma penukaran (seperti <code>transform
dan copy
)🎜Penggunaan🎜🎜🎜Menggunakan algoritma generik ialah ringkas. Hanya hantar bekas input, bekas output (jika perlu) dan objek function
sebagai argumen. 🎜🎜Sebagai contoh, kod berikut mengisih tatasusunan integer menggunakan algoritma #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 }
std::max_element
: 🎜rrreee🎜Dengan memanfaatkan algoritma generik, kita tidak perlu menulis fungsi maksimum find kita sendiri, tetapi boleh menggunakan semula kod daripada perpustakaan standard, yang meningkatkan kesederhanaan dan kebolehselenggaraan kod. 🎜Atas ialah kandungan terperinci Bagaimanakah algoritma generik dalam C++ berfungsi semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!