Algoritma STL boleh dilanjutkan dengan menggunakan objek fungsi, iaitu kelas atau struktur dengan operator panggilan (operator()). Anda hanya perlu menghantar objek fungsi sebagai parameter algoritma Contohnya, apabila menggunakan algoritma std::sort untuk mengisih bekas, anda boleh lulus objek fungsi std::greater<> Objek fungsi membolehkan kami menyesuaikan algoritma STL untuk mencapai keperluan yang lebih fleksibel, seperti menyesuaikan fungsi penjumlahan untuk menggunakan fungsi eksponen kepada jumlah elemen Menggunakan objek fungsi ExpSum, kami boleh menukar 1^2 + 2^2 + 3^2 + 4 Hasil daripada ^2 (30) dihantar ke algoritma std::accumulate untuk pengumpulan.
Pustaka Templat Standard (STL) C++ menyediakan banyak algoritma berkuasa untuk memanipulasi pengumpulan data dengan mudah dan cekap. Walau bagaimanapun, kadangkala kami perlu menyesuaikan algoritma ini untuk memenuhi keperluan khusus kami. Objek fungsi C++ membolehkan kami memanjangkan algoritma STL dengan mudah untuk mencapai penyesuaian ini.
Objek Fungsi
Objek fungsi ialah kelas atau struktur yang mempunyai operator panggilan (operator()
). Dengan memanggil objek fungsi, anda boleh melakukan beberapa operasi seperti memanggil fungsi biasa. operator()
) 的类或结构。通过调用函数对象,可以像调用普通函数一样执行一些操作。
扩展 STL 算法
std::sort
算法并传递 std::greater<>
函数对象作为比较函数。std::vector<int> vec = {3, 1, 2, 4}; std::sort(vec.begin(), vec.end(), std::greater<>{});
[4, 3, 2, 1]
实战案例:自定义求和函数
以下实战案例展示了如何使用函数对象自定义 std::accumulate
Melanjutkan algoritma STL
🎜std::sort
dan lulus std::greater<> kod > Fungsi objek sebagai fungsi perbandingan.
struct ExpSum { int operator()(int a, int b) const { return a + std::pow(b, 2); } }; int main() { std::vector<int> vec = {1, 2, 3, 4}; int sum = std::accumulate(vec.begin(), vec.end(), 0, ExpSum{}); std::cout << sum << std::endl; // 输出:30(1^2 + 2^2 + 3^2 + 4^2) }
[4, 3, 2, 1]
std::accumulate
untuk mengira jumlah elemen dalam bekas dan menggunakan fungsi eksponen: 🎜rrreee🎜Dengan kaedah ini, kami boleh Mengintegrasikan logik tersuai ke dalam algoritma STL untuk meningkatkan fleksibiliti dan memenuhi keperluan khusus kami. 🎜Atas ialah kandungan terperinci Bagaimana untuk melanjutkan algoritma STL menggunakan objek fungsi C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!