Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mereka bentuk objek fungsi STL tersuai untuk meningkatkan kebolehgunaan semula kod?

Bagaimana untuk mereka bentuk objek fungsi STL tersuai untuk meningkatkan kebolehgunaan semula kod?

王林
王林asal
2024-04-25 14:57:01626semak imbas

Menggunakan objek fungsi STL boleh meningkatkan kebolehgunaan semula, termasuk langkah-langkah berikut: Tentukan antara muka objek fungsi (buat kelas dan warisi daripada std::unary_function atau std::binary_function) Overload operator() untuk mentakrifkan kelakuan fungsi dalam operator terlampau beban( ) Gunakan objek fungsi melalui algoritma STL (seperti std::transform)

如何设计自定义的 STL 函数对象来提高代码的可重用性?

Gunakan objek fungsi STL untuk meningkatkan kebolehgunaan semula kod

Objek fungsi STL ialah kelas boleh panggil, yang Membolehkan menggabungkan pengaturcaraan berfungsi dengan pengaturcaraan berorientasikan objek . Dengan merangkum logik kod dalam objek fungsi, anda boleh meningkatkan kebolehgunaan semula dan enkapsulasi.

Langkah:

  1. Tentukan antara muka objek fungsi: Buat kelas yang mewarisi daripada std::unary_function atau std::binary_function. Lebihkan operator() untuk menentukan tingkah laku fungsi.
  2. std::unary_functionstd::binary_function。重载 operator() 以定义函数行为。
  3. 实现函数逻辑:在重载的 operator() 中,实现所需的功能。
  4. 使用函数对象:可以使用像 std::transformstd::for_each 这样的 STL 算法来应用函数对象。

示例:

假设我们想要创建一个函数对象来计算字符串的长度:

class StringLength {
public:
    int operator()(const std::string& str) {
        return str.length();
    }
};

int main() {
    std::vector<std::string> names = { "John", "Mary", "Bob" };

    std::vector<int> lengths;
    std::transform(names.begin(), names.end(), std::back_inserter(lengths), StringLength());

    for (int length : lengths) {
        std::cout << length << " ";  // 输出:4 4 3
    }
    std::cout << "\n";

    return 0;
}

在这个例子中,StringLength 类是一个函数对象,实现了计算字符串长度的逻辑。我们通过 std::transform 将它应用到字符串向量 names 上,将计算的长度存储到 lengths

Laksanakan logik fungsi:

Dalam operator() yang terlebih beban, laksanakan fungsi yang diperlukan.

🎜Menggunakan objek fungsi: 🎜Anda boleh menggunakan algoritma STL seperti std::transform atau std::for_each untuk menggunakan objek fungsi. 🎜🎜Contoh: 🎜🎜🎜Andaikan kita ingin mencipta objek fungsi untuk mengira panjang rentetan: 🎜rrreee🎜Dalam contoh ini, kelas StringLength ialah fungsi Objek yang melaksanakan logik pengiraan panjang rentetan. Kami menggunakannya pada vektor rentetan nama melalui std::transform, menyimpan panjang yang dikira ke dalam vektor lengths. 🎜🎜Dengan menggunakan objek fungsi tersuai, kami boleh mencapai penggunaan semula kod dan menggunakan logik pengiraan panjang rentetan dengan mudah pada koleksi rentetan yang berbeza. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk objek fungsi STL tersuai untuk meningkatkan kebolehgunaan semula kod?. 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