iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++11中怎么实现参数绑定
  • 302
分享到

C++11中怎么实现参数绑定

2023-06-19 10:06:56 302人浏览 薄情痞子
摘要

c++11中怎么实现参数绑定,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。lambda表达式的缺点还记得当初引入lambda表达式的原因么?向算法传递谓词时,由

c++11中怎么实现参数绑定,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

lambda表达式的缺点

还记得当初引入lambda表达式的原因么?向算法传递谓词时,由于一般的函数无法传递参数以外的信息,函数对象又比较麻烦,所以引入了lambda表达式。

但是lambda表达式也有缺点:在类似功能多次使用的时候,每次定义lambada表达式也会比较麻烦。本文介绍另一种方式:参数绑定。

标准库bind函数

继续用lambda表达式中用过的例子,如果希望找到第一个长度小于2的string,可以使用以下代码:

bool istarget(const string& s){
   return s.size() < 2;
}
vector<string> v{"This","is", "a", "predicate", "."};
auto found = find_if(v.begin(), v.end(), istarget);
cout << *found << endl;

如果我们希望在istarget中选择string时使用变量而不是固定的2的时候,一般的函数就不能满足需求了(虽然使用全局变量算是一个选项)。除了和函数对象和lambda表达式以外,还可以使用标准库bind函数来实现,其步骤如下:

根据需求定义比较函数

在本例中,就是定义一个接受选择对象string对象和最小长度参数的istarget函数:

bool istarget(const string& s, int sz){
   return s.size() < sz;
}

使用参数绑定定义新的可调用对象

C++11标准库提供了一个bind函数,按照C++ Primer的说法,可以将bind函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。调应bind的一般形式为:

auto newCallable = bind(callable, arg_list);

具体到本例,可以这样定义:

  

auto isTarget = bind(istarget, _1, 2);

istarget:bind适配的对象,就是第一步中定义具有两个参数的istarget函数

接下来是传递给istarget的参数。参数的顺序和istarget参数列表中规定的一致。

_1:占位符,_1代表isTarget被调用时的接受的第一个实参,这个_1处在bind参数列表的第一个位置表明isTarget的第一个实参会在调用istarget时作为istarget的第一个实参使用。

比较长度信息,形式和占位符不同,处在参数列表的第二个位置,这个值会在调用istarget时作为istarget的第二个实参使用。

使用定义的可调用对象

vector<string> v{"This","is", "a", "predicate", "."};
auto found = find_if(v.begin(), v.end(), isTarget);
cout << *found << endl;

由于在bind定义时只使用了一个占位符,所以可以把isTarget当作一个只有一个参数的可调用对象使用,这个参数的类型和istarget的第一个参数一致。

istarget函数定义一次之后,可以使用bind函数适应各种算法的要求,从而实现了实现一次定义,多次使用的目标。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网其他教程频道,感谢您对编程网的支持。

--结束END--

本文标题: C++11中怎么实现参数绑定

本文链接: https://www.lsjlt.com/news/295581.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++11中怎么实现参数绑定
    C++11中怎么实现参数绑定,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。lambda表达式的缺点还记得当初引入lambda表达式的原因么?向算法传递谓词时,由...
    99+
    2023-06-19
  • 怎么在SpringMVC中绑定参数
    本篇文章为大家展示了怎么在SpringMVC中绑定参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 简单参数绑定执行HandlerAdapter的handler方法后,进入RequestMap...
    99+
    2023-06-14
  • Gin框架中参数绑定的实现是怎样的
    Gin框架中参数绑定的实现是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的Content...
    99+
    2023-06-22
  • VB.NET中怎么实现数据绑定
    本篇文章给大家分享的是有关VB.NET中怎么实现数据绑定,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。TextBox组件通过下列语句就可以把已经得到的数据集"myDa...
    99+
    2023-06-17
  • Flex中怎么实现数据绑定
    Flex中怎么实现数据绑定,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先来看一下这个例子最终完成的Demo演示:下面来看看是如何实现这套机制的,首先我们来创建一个可绑定...
    99+
    2023-06-17
  • C++11中bind绑定器和function函数对象实例分析
    这篇文章主要介绍了C++11中bind绑定器和function函数对象实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++11中bind绑定器和function函数对象实例分析文章都会有所收获,下面我们...
    99+
    2023-07-02
  • Gin框架之参数绑定的实现
    为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的Content-Type识别请求数据类型并利用反射机制自动提取请求中QueryString、form表单、JSON、...
    99+
    2024-04-02
  • C++11中bind绑定器和function函数对象介绍
    目录一. bind1st和bind2nd1.C++ STL中的绑定器2.bind1st和bind2nd的底层原理实现二. 模板的完全特例化和非完全特例化三. function函数对象...
    99+
    2024-04-02
  • C#winform中数据库绑定DataGrid的实现
    目录1. 建立数据库2.C#winform创建窗体程序3.创建DataGridView以及数据绑定第一次写博客,记录一下 最近在利用winform和数据库SQLServe进行数据操作...
    99+
    2024-04-02
  • SpringMVC中参数绑定问题怎么解决
    这篇文章主要讲解了“SpringMVC中参数绑定问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMVC中参数绑定问题怎么解决”吧!1. 参数绑定的过程我们可以回忆一下,...
    99+
    2023-06-29
  • ASP.NET中WebAPI的参数绑定
    在这篇文章中,我们将学习WebAPI如何将HTTP请求数据绑定到一个操作方法的参数中。 操作方法在WebAPI控制器中可以有一个或多个不同类型的参数。它可以是基本数据类型或复杂类型。...
    99+
    2024-04-02
  • layui数据绑定怎么实现
    在layui中,可以通过使用模板引擎来实现数据绑定。以下是一个实现数据绑定的示例代码:1. 在HTML中定义一个模板:```html...
    99+
    2023-09-15
    layui
  • c#中datagridview怎么绑定数据源
    在C#中使用DataGridView控件绑定数据源可以通过以下步骤实现: 创建一个DataGridView控件并将其添加到窗体中...
    99+
    2024-04-02
  • Flex怎么实现数据绑定
    小编给大家分享一下Flex怎么实现数据绑定,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex数据绑定的概念从字面上看,“绑定”表示将若干个物体捆绑在一起。使用...
    99+
    2023-06-17
  • Vue中怎么实现数据双向绑定
    这篇文章主要介绍了Vue中怎么实现数据双向绑定的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中怎么实现数据双向绑定文章都会有所收获,下面我们一起来看看吧。在我们使用vue的时候,当数据发生了改变,界面也会...
    99+
    2023-07-04
  • Vue 中怎么实现数据双向绑定
    本篇文章给大家分享的是有关 Vue 中怎么实现数据双向绑定,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MVVM 架构的优点低耦合。视图(Vi...
    99+
    2024-04-02
  • vue.js中怎么实现动态数据绑定
    这期内容当中小编将会给大家带来有关vue.js中怎么实现动态数据绑定,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。从new一个实例开始谈起网上的很多源码解读都是从 Obs...
    99+
    2024-04-02
  • vue中双向数据绑定怎么实现
    vue中双向数据绑定是通过数据劫持结合发布订阅模式的方式来实现的,其核心方法是Object.defineProperty()方法。实现双向数据绑定的示例:<!DOCTYPE html><html><h...
    99+
    2024-04-02
  • MySQL中怎么实现数据绑定操作
    在 MySQL 中,可以通过使用参数化查询来实现数据绑定操作。参数化查询可以防止 SQL 注入攻击,并且可以提高查询性能。 以下是一...
    99+
    2024-04-09
    MySQL
  • vue.js中怎么实现数据绑定操作
    这篇文章给大家介绍vue.js中怎么实现数据绑定操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据绑定响应式的数据绑定系统。建立绑定之后,DOM将和数据保持同步,无须手动维护DOM...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作