c++学习之函数对象
来源:互联网 发布:淘宝滑动验证加密算法 编辑:程序博客网 时间:2024/06/04 23:34
c++的函数对象,以前接触得比较少,今天重新看了下,感觉这真的是个很使用的技术,相当的好用。
先介绍下什么是函数对象,简单的说就是函数操作符“()”的重载,通过重载函数操作符在类中实现函数的功能,并通过生成类的对象,调用操作符,实现效果就和执行函数一样。有时候函数对象使用起来比函数更加的灵活,而且函数对象能很好的兼容c++的标准库算法,下面一段代码做一个简单的演示:
#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;// // class GT_cls{// public:// GT_cls(int val):bound(val){}// bool operator()(const int &ival){// return ival > bound;// }// private:// int bound ;// };template <typename Type>class Num_Equal{public:Num_Equal(const Type &tt1,const Type &tt2):t1(tt1),t2(tt2) {}bool operator() (const Type &tt1 , const Type &tt2){return tt1 == tt2;}private:Type t1;Type t2;};int main(){// int a =10, b=12;// cin >>a >>b ;// Num_Equal<int> numTest(a,b);//可以用函数对象// bool flag = numTest(a,b);// cout << flag <<endl;// // // cin.clear();vector<string> sVec;cout << "input string" <<endl;string str;while(cin>>str)//ctrl+z结束sVec.push_back(str);cin.clear();cout << "input a special string" <<endl;cin >> str;for(vector<string>::iterator iter= sVec.begin();iter != sVec.end();iter++){//if()Num_Equal<string> str_equal(*iter,str);//使用函数对象if( !str_equal(*iter,str) )*iter = str;}cout <<"string vector: "<<endl;for(vector<string>::iterator iter=sVec.begin();iter != sVec.end() ; iter++){cout << *iter <<endl;}return 0;}上面的一段代码先定义了一个调用操作符的类,该类的功能是比较两个数是否相等,后面定义了一个string的数据,然后输入一个string,将数据中的元素和输入的string做比较,如果和输入的string不想等和用string替换掉vector中的元素,最后输出,里面的比较方法使用的就是上面定义的类的函数对象
- c++学习之函数对象
- STL学习之函数对象
- C语言学习之函数
- C语言学习之函数
- C学习笔记之函数
- C语言学习之函数()()
- C++STL之函数对象及谓词
- C++STL之函数对象及谓词
- C++STL之函数对象及谓词
- C++STL之函数对象及谓词
- C学习之------C函数指针
- STL 学习笔记 之 函数对象
- C/C++学习之路之函数
- Objective-C研究之Object对象学习
- 【C++】C++基础学习之面向对象
- C++学习之c++函数对象(仿函数)
- C++Template学习笔记之函数模板
- C++test 学习之桩函数
- Flash文本引擎, 第一部分: 概述
- 看原理图之UART
- RTP协议之Header结构解析
- Android调用Market搜索软件
- 移动开发:Android FBReader源码修改package name
- c++学习之函数对象
- 存货核算-期末处理,提示‘期末处理有未记账单据,是否继续?’
- 【rmzt】进击的巨人&&三笠xp主题_8.9
- poj--1579--(DFS+记忆化搜索之经典)
- ProgressBar---进度圈的显示
- Asp.net 关于本地发布正常,服务器端SQL语法错误。
- 解决:Adb connection Error:远程主机强迫关闭了一个现有的连接
- 【计算机网络】网络层
- 网址收藏