要将对象的成员函数作为std算法的unary_function调用,可以使用C++的标准库中的std::mem_fn
和std::bind
。
std::mem_fn
是一个实用函数,用于生成一个可调用对象,该对象可以将指定的成员函数应用于指定的对象。std::bind
是一个实用函数,用于生成一个可调用对象,该对象可以将指定的参数传递给指定的函数。
以下是一个示例代码,演示如何将对象的成员函数作为std算法的unary_function调用:
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
class MyClass {
public:
void print(int value) {
std::cout<< value<< std::endl;
}
};
int main() {
MyClass obj;
std::vector<int> values = {1, 2, 3, 4, 5};
auto mem_fn_print = std::mem_fn(&MyClass::print);
std::for_each(values.begin(), values.end(), std::bind(mem_fn_print, &obj));
return 0;
}
在这个示例中,我们定义了一个名为MyClass
的类,该类具有一个名为print
的成员函数。我们创建了一个MyClass
对象obj
和一个包含整数值的向量values
。
我们使用std::mem_fn
生成一个可调用对象mem_fn_print
,该对象可以将MyClass::print
成员函数应用于指定的对象。然后,我们使用std::bind
将mem_fn_print
和obj
对象绑定在一起,生成一个可调用对象,该对象可以将MyClass::print
成员函数应用于obj
对象。最后,我们使用std::for_each
算法遍历values
向量,并将每个值传递给绑定的可调用对象。
这样,我们就可以将对象的成员函数作为std算法的unary_function调用,并将指定的参数传递给指定的函数。
领取专属 10元无门槛券
手把手带您无忧上云