栏目分类
Renzo中文网 你的位置:Pepe 中文站 > Renzo中文网 > c++之函数对象与内建函数
c++之函数对象与内建函数

发布日期:2025-01-04 11:33    点击次数:186


1.函数对象 函数对象(仿函数): 重载函数调用操作的类,其对象常称之为函数对象; 函数对象使用重载()时,其行为类似函数调用,也叫仿函数; 函数对象本质: 函数对象(仿函数)本质是一个类,不是一个函数。 函数对象特点: 函数对象在使用时可以有形参、有返回值。 函数对象可以有自己的状态值。 函数对象可以作为函数形参。 使用示例: #include using namespace std; class myfunc { public: myfunc() { count = 0; } //求和示例,重载() int operator()(int a, int b) { return a + b; } //输出示例,count记录函数调用次数 void operator()(string str) { count++; cout 2.谓词 谓词: 函数对象返回值为bool类型,则称之为谓词; 一元谓词: 仿函数的形参只有一个; 二元谓词: 仿函数的形参有两个参数; #include #include #include using namespace std; class Check { public: bool operator()(int val) { return val > 5; } bool operator()(int a1,int a2) { return a1 > a2; } }; void test() { vectorvtr; /*插入数据*/ for (int i = 0; i 5的值" 5的值*/ vector::iterator ret=find_if(vtr.begin(), vtr.end(), Check());//Check() ---匿名函数对象 if (ret ==vtr.end()) { cout 5的值!" 3.内建函数对象 内建函数对象: STL中提供了一些内建函数对象:算术仿函数、关系仿函数、逻辑仿函数 --头文件 3.1算术运算符 算术仿函数:实现四则运算。 加法:template T plus 减法:template T minus 乘法:template T mutiplies 除法:template T divides 取模:template T modulus 取反:template T negate --正数变负数,负数变正数 注意:其中negate是一元运算(只有一个参数),其余均为二元运算。 #include using namespace std; #include void test() { //negate使用示例: negate n; cout p; cout m; cout mt; cout d; cout md; cout 3.2关系运算符 内建仿函数:关系运算符 大于: templatebool greater 大于等于:templatebool greater_equal 小于: templatebool less 小于等于:templatebool less_equal 等于: templatebool equal_to 不等于: templatebool not_equal_to #include using namespace std; #include #include #include void print(int val) { cout vtr; vtr.push_back(10); vtr.push_back(40); vtr.push_back(30); vtr.push_back(60); vtr.push_back(6); /*sort排序,默认是从小到大,其默认的仿函数即less*/ sort(vtr.begin(), vtr.end()); for_each(vtr.begin(), vtr.end(), print); cout a2; } } 也可以直接使用STL内建仿函数:greater() */ sort(vtr.begin(), vtr.end(), greater()); for_each(vtr.begin(), vtr.end(), print); cout 3.3逻辑运算符 内建仿函数--逻辑运算符 逻辑与:templatebool logical_and 逻辑或: templatebool logical_or 逻辑非: templatebool logical_not #include using namespace std; #include #include #include void print(bool val) { cout 审核编辑:汤梓红

Powered by Pepe 中文站 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群系统 © 2013-2024