首页 > 代码库 > 成员函数的函数配接器

成员函数的函数配接器

在STL标准库中除了提供常规的函数配接器外,还提供了两个针对成员函数的函数配接器,其主要功能是通过这些配接器,你可以针对每一个元素直接去调用其成员函数。

这样的成员函数配接器有两个,分别是:

mem_fun_ref(op)调用对象的成员函数op

mem_fun(op)调用对象指针的成员函数op

这两个函数配接器都是去调用对象中的成员函数op,对于这两个成员函数,以前是只能调用对象的const成员函数,但现在的情况好像有所改变,对所有的成员函数都可以调用了。

具体的示例如下:

#include<iostream>
#include<functional>
#include<deque>
#include<algorithm>
#include<iterator>
using namespace std;

class A
{
public:
	A(int b):a(b){}
	~A(){}
	void mfun()
	{
		ostream_iterator<int>(cout,"--") = ++a;
	}
private:
	int a;
};
int main()
{
	deque<A>de;
	for(int i = 0;i<5;i++)
		de.push_back(A(i));
	for_each(de.begin(),de.end(),mem_fun_ref(&A::mfun));
	cout<<endl;
	deque<A*>de2;
	for(int i = 0;i<5;i++)
		de2.push_back(new A(i));
	for_each(de2.begin(),de2.end(),mem_fun(&A::mfun));
	/*
	1--2--3--4--5--
	1--2--3--4--5--请按任意键继续. . .
	*/
}

使用注意:

一、通过该类配接器调用的成员函数必须要在对象的类型中存在。

二、这两个配接器的参数都必须是传递该类型中成员函数的偏移量,不能直接传递函数名。