// mem_fn 有两个重载版本: // 用法1:mem_fn(&MyClass::printMessage) 用于将成员函数转换为函数对象 // 用法2:mem_fn(&MyClass::printMessage)(&obj, "hello world") 用于调用成员函数 // mem_fn 是一个函数模板,它接受一个成员函数指针或成员函数引用,并返回一个函数对象,该对象可以调用相应的成员函数。 #include #include #include using namespace std; class Stu { private: string name; int age; public: Stu(const string &name, int age) : name(name), age(age) {} public: void show() { cout << "name is " << name << ", age is " << age << endl; } }; int main() { vector vs; vs.push_back(Stu("disen", 18)); vs.push_back(Stu("lucy", 20)); vs.push_back(Stu("jack", 15)); vs.push_back(Stu("mack", 19)); // 遍历容器中所有成员,成员函数作为仿函数时,则通过容器成员调用它的仿函数 for_each(vs.begin(), vs.end(), mem_fun_ref(&Stu::show)); return 0; }