C++中使用mem_fun()使得类成员函数成为仿函数

mem_fun()是STL六大组件中配接器的一种,它接收成员函数指针,使得我们可以将类成员函数当做仿函数来使用。

仿函数一般是在我们使用STL中的算法,进行自定义类型操作时,进行定义的。例如sort()算法,可自定义比较函数,for_each()算法,可自定义遍历操作等等。

使用mem_fun()可以避免我们自定义仿函数(重载()操作符),而直接使用类中的成员函数,来对类对象进行相应的操作。

以下是代码实现:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;

// 类定义
class display
{
public:
	// 成员变量
	int val;
	// 构造函数
	display(int v) :val(v) {}
	// 成员函数:进行变量的自增,打印操作
	void showValue()
	{
		++this->val;
		cout << "using mem_fun. val = " << this->val << endl;
		return;
	}
};

int main()
{
	// 定义数组,存储类对象指针
	vector<display*> v;

	display* d1 = new display(1);
	display* d2 = new display(2);
	display* d3 = new display(3);

	v.push_back(d1);
	v.push_back(d2);
	v.push_back(d3);

	// 使用for_each()算法,绑定类成员函数,对每一个对象的成员变量进行打印操作
	for_each(v.begin(), v.end(), mem_fun(&display::showValue));

	delete d1;
	delete d2;
	delete d3;

	return 0;
}

以上绑定的成员函数只是对对象的成员变量进行自增和打印操作,在实际使用中,可以在函数内部实现其他功能操作。

谢谢阅读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值