STL-函数对象

简介: STL-函数对象

概念:


重载函数调用操作符的类,其对象常称为函数对象

函数对象使用重载的()时,行为类似函数调用,也叫仿函数


本质:函数对象(仿函数)是一个类,不是一个函数


函数对象使用:


函数对象在使用时,可以像普通函数那样调用,可以有参数,有返回值

函数对象超出普通函数的概念,函数对象有自己的状态

函数对象可以作为参数传递


例子:


#include <iostream>
using namespace std;
#include <string>
class MyAdd
{
public:
  int operator()(int v1,int v2)
  {
  return v1+v2;
  }
};
//1.函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值
void test()
{
  MyAdd myAdd;
  cout<<myAdd(1,2)<<endl;   //可以返回值
}
//2.函数对象超出普通函数的概念,函数对象可以有自己的状态
class Printstr
{
public:
  Printstr()
  {
  this->count = 0;
  }
  void operator()(string thing)
  {
  cout<<thing<<endl;
  count++;    //可以有自己的状态统计
  }
  int count;
};
void test02()
{
  Printstr p;
  p("hello 2020");
  p("hello 2020");
  p("hello 2020");
  cout<<"调用次数:"<<p.count<<endl;  //输出状态
}
//3.函数对象可以作为参数传递
void doprint(Printstr &p,string thing)  //可以做参数传递
{
  p(thing);
}
void test03()
{
  Printstr p;
  doprint(p,"hello 2020");
}
int main()
{
  //test();
  //test02();
  test03();
  system("pause");
  return 0;
}


运行结果:





相关文章
|
6月前
|
C++ 容器
|
4月前
|
算法 C++ 容器
|
5月前
|
C++
C++函数对象(仿函数)
C++函数对象(仿函数)
|
存储 C++ 索引
1.1 C++ STL 字符串构造函数
String 字符串操作容器是C++标准中实现的重要容器,其主要用于对字符串的高效处理,它和C风格中的`string.h`并不是同一个库,两个库有极大的差距,C库中的`string.h`主要面向过程提供一些处理函数,而C++库中的`string`则是基于类实现的更高效的一种字符串处理方法集,类中提供了非常方便的成员函数供我们使用.
43 0
|
6月前
|
C++
C++模板与STL【函数对象】
C++模板与STL【函数对象】
|
算法 C++
82 C++ - 函数对象
82 C++ - 函数对象
38 0
|
存储 编译器 C语言
论函数对象
论函数对象
|
C++
STL-函数对象(仿函数)
STL-函数对象(仿函数)
64 0
|
算法 搜索推荐 C++
第九层(10):STL之函数对象
第九层(10):STL之函数对象
第九层(10):STL之函数对象
|
编译器 C语言 C++
【STL实用技巧】函数对象(仿函数)与pair类型初探
【STL实用技巧】函数对象(仿函数)与pair类型初探
95 0
【STL实用技巧】函数对象(仿函数)与pair类型初探