Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melanjutkan algoritma STL menggunakan objek fungsi C++?

Bagaimana untuk melanjutkan algoritma STL menggunakan objek fungsi C++?

PHPz
PHPzasal
2024-04-25 22:18:02449semak imbas

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::greatera8093152e673feb7aba1828c43532094 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.

如何使用 C++ 函数对象扩展 STL 算法?

Bagaimana untuk melanjutkan algoritma STL menggunakan objek fungsi C++?

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 算法

  • 使用函数对象扩展 STL 算法非常简单,只需将函数对象作为算法的参数之一传递即可。
  • 例如,要使用自定义比较函数对容器进行排序,我们可以使用 std::sort 算法并传递 std::greatera8093152e673feb7aba1828c43532094 函数对象作为比较函数。
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

🎜
  • Melanjutkan algoritma STL menggunakan objek fungsi adalah sangat mudah, hanya lulus objek fungsi sebagai salah satu parameter algoritma.
  • Sebagai contoh, untuk mengisih bekas menggunakan fungsi perbandingan tersuai, kita boleh menggunakan algoritma std::sort dan lulus std::greatera8093152e673feb7aba1828c43532094 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)
}
  • Output: [4, 3, 2, 1]
🎜🎜Kes praktikal: Fungsi penjumlahan tersuai 🎜 🎜🎜Contoh praktikal berikut menunjukkan cara menggunakan objek fungsi untuk menyesuaikan algoritma 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn