C++11的函数对象怎么使用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍"C++11的函数对象怎么使用",在日常操作中,相信很多人在C++11的函数对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++11的函数对
千家信息网最后更新 2025年12月02日C++11的函数对象怎么使用
这篇文章主要介绍"C++11的函数对象怎么使用",在日常操作中,相信很多人在C++11的函数对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++11的函数对象怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
函数对象
考虑下面的代码:
bool istarget(const string& s){
return s.size() < 2;
}
vector v{"This","is", "a", "predicate", "."};
auto found = find_if(v.begin(), v.end(), istarget);
cout << *found << endl;
使用find_if算法从给定的vector中找到第一个长度小于2的string对象。
如果我们希望在istarget中选择string时使用变量而不是固定的2的时候,一般的函数就不能满足需求了(虽然使用全局变量算是一个选项)。这时的一个选择就是函数对象。
首先定义一个重载了()运算符的IsTarget类:
class IsTarget{
unsigned int max;
public:
IsTarget(int m):max(m){}
bool operator()(const string& s){
return s.size() < max;
}
};IsTarget类可以像下面这样使用:
string test("H");
IsTarget it(2);
cout << it(test) << endl;注意it(test)的部分,从代码的形式来看,这个类的对象可以以e(args)的形式编码并执行,因此它也是可执行对象。长度信息是在创建对象it时指定,在()运算符被执行是使用。在回到find_if的例子,可以这样使用IsTarget类:
vector v{"This","is", "a", "predicate", "."};
auto found = find_if(v.begin(), v.end(), IsTarget(2));
cout << *found << endl; 在执行find_if时,比较的长度信息作为参数传递给IsTarget类,以便在执行选择操作时使用。
使用捕获列表
使用函数对象还是有些麻烦,继续请出lambda表达式,它有一个被[ ]包围的捕获列表,用于捕获lambda表达式所在函数的局部变量:
vector v{"This","is", "a", "predicate", "."};
unsigned int max = 2;
auto found = find_if(v.begin(), v.end(),
[max](const string& s){return s.size() < max;}); max是在find_if执行的函数里定义的变量,将其包含在lambda表达式的捕获列表[ ]中以后,就可以在lambda表达式中使用它了。
到此,关于"C++11的函数对象怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
对象
函数
变量
表达式
学习
长度
选择
代码
信息
形式
是在
更多
运算符
帮助
运算
实用
接下来
例子
全局
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
走小路网络技术
数据库怎么存字典
软件开发实战
邀请函网络安全演讲的英语
武汉客厅 软件开发
网络技术服务工商怎么样
嘉定区创新软件开发品质保障
20件船舶航运的网络安全事件
提高网络技术能力的基本要素
通讯行业数据库书籍
网络技术服务费赋码
证书服务器的功能
涉及海量数据库的案例
网络安全素质教育证书有用吗
建筑师服务器管理
无线网络技术百科
江阴hp服务器维修公司
sql数据库死锁解决
access数据库在哪儿
多媒体技术属于网络技术吗
it软件开发行业特点
数据库不能存生僻字
软件开发工程师职称论文
梦幻服务器gm管理
逆战服务器在哪里换
浙江潮流软件开发过程
国家水稻数据库龙洋16
服务器rt
北京诚信网络技术服务哪家好
梦幻的服务器为啥进不去