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)
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:
std::unary_function
atau std::binary_function
. Lebihkan operator()
untuk menentukan tingkah laku fungsi. std::unary_function
或 std::binary_function
。重载 operator()
以定义函数行为。operator()
中,实现所需的功能。std::transform
或 std::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
Dalam operator()
yang terlebih beban, laksanakan fungsi yang diperlukan.
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!