STL中的函数对象
创始人
2024-06-01 01:51:41

STL-函数对象

  • 函数对象概念
    • 重载函数调用操作符的类,其对象常称为函数对象
    • 函数对象使用重载的()时,行为类似函数调用,也叫仿函数
  • 本质
    • 函数对象(仿函数)是一个类,不是一个函数—修改算法策略—采用虚拟对象调用
  • 函数对象的使用
  • 理解
    • 仿函数其实就是理解为取出当前容器中的数据,而后在重载()()中进行相关的运算输出,输出的是何种值就是该重载函数的返回值类型
    • 特点
      • 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值—通过类构造对象后实现函数
      • 函数对象超出普通函数的概念,函数对象可以有自己的状态—可以有自己的属性,因为自身就是一个类
      • 函数对象可以作为参数传递
  • 谓词
    • 概念
      • 返回bool类型的仿函数称为谓词
      • 如果operator()接受一个参数,那么叫做一元谓词
      • 如果operator()接受两个参数,那么叫做二元谓词
  • 内建函数对象—已经存在的仿函数
    • 概念
      • STL内建了一些函数对象
    • 分类
      • 算术仿函数
      • 关系仿函数
      • 逻辑仿函数
    • 用法
      • 这些仿函数所产生的对象,用法和一般函数完全相同
      • 使用内建函数对象,需要引入头文件#include< functional >
  • 算术仿函数
    • 功能
      • 实现四则运算
      • 其中negate是一元运算,其他都是二元运算
  • 四则运算仿函数原型
    • template< class T > T plus< T >—加法仿函数
    • template< class T > T minus< T >—减法仿函数
    • template< class T > T multiplies< T >—乘法仿函数
    • template< class T > T divides < T >—除法仿函数
    • template< class T > T modulus < T >—取模仿函数
    • template< class T > T negate < T >—取反仿函数
      void test(void){negaten;cout << n(50) << endl;plusp;cout << p(10, 20) << endl;}
    
  • 关系运算仿函数
    • template< class T > bool equal_to< T >—等于
    • template< class T > bool no_equal_to< T >—不等于
    • template< class T > bool greater< T >—大于
    • template< class T > bool greater_equal < T >—大于等于
    • template< class T > bool less < T >—小于
    • template< class T > bool less_equal < T >—小于等于
      void test(void){vector v;v.push_back(10);v.push_back(30);v.push_back(20);sort(v.begin(), v.end(), greater());//等价于sort(v.begin(), v.end(), mycompare());}
    
  • 逻辑关系仿函数
    • template< class T > bool logical_and< T >—逻辑与
    • template< class T > bool logical_or< T >—逻辑或
    • template< class T > bool logical_not< T >—逻辑非
      void test(void){vector v;v.push_back(true);v.push_back(false);v.push_back(true);//利用逻辑非将容器v搬运到容器v2中vector v2;v2.resize(v.size());//要开辟好transform(v.begin(), v.end(), v2.begin(), logical_not);}
    

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...