C++ std::mem_fun_ref

2025 年 3 月 24 日 | 4 分钟阅读

函数模板 std::mem_fn 创建包装器对象,这些对象能够存储、复制和调用指向其他成员的指针。要调用 std::mem_fn,我们可以使用指向对象的引用或指针(包括智能指针)。

C++ 标准库,即头文件,包含函数适配器 std::mem_fun_ref。它包含在更大的函数适配器家族中,该家族还包括 std::mem_fun 和 std::mem_fn,它旨在修改成员函数,以便在函数对象和算法中使用。使用 std::mem_fun_ref 创建函数对象,这些对象可以在给定的实例上调用指定的成员函数。与接受指针的 std::mem_fun 不同,Std::mem_fun_ref 需要对象的引用而不是指针。当您拥有一个对象容器并且希望对容器中的每个对象一致地应用成员函数时,它变得特别有用。

语法

它具有以下语法:

示例 1

让我们举一个例子来说明 C++ 中的 std::mem_fun_ref() 函数。

输出

 
Greetings from Foo!
Value: 42
Data: 100
Sum: 12
Accessed Data: 100
Sum with Pointer: 30
Sum of All: 6
Calculated Sum: 35   

示例 2

让我们再举一个例子来说明 C++ 中的 std::mem_fun_ref() 函数。

输出

 
Value: 10
Value: 20
Value: 30
Extracted Values:
10 20 30    

示例 3

让我们再举一个例子来说明 C++ 中的 std::mem_fun_ref() 函数。

输出

 
Hello, I'm Alice and I'm 30 years old.
Hello, I'm Bob and I'm 25 years old.
Hello, I'm Charlie and I'm 40 years old.   

结论

总之,在 C++ 中使用标准库提供的灵活函数适配器 std::mem_fun_ref 来创建函数对象,这些对象可以在给定类的实例上调用特定的成员函数。特别是,std::mem_fun_ref 在处理对象容器时很有用,因为它接受对象的引用而不是指针,就像 std::mem_fun 一样。Std::mem_fun_ref 通过将成员函数调用封装到函数对象中,使成员函数调用更易于管理和阅读,从而更易于在通用算法或函数对象中使用成员函数。这个有用的工具简化了 C++ 中的面向对象代码,使其更灵活,同时充分利用了标准库。它允许编写更清晰、更具表现力的代码。