本文主要是介绍成员函数的函数配接器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在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--请按任意键继续. . .*/
}
使用注意:
一、通过该类配接器调用的成员函数必须要在对象的类型中存在。
二、这两个配接器的参数都必须是传递该类型中成员函数的偏移量,不能直接传递函数名。
这篇关于成员函数的函数配接器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!