当前位置: 首页 > news >正文

做网站卖得出去吗怎么做网站的导航条

做网站卖得出去吗,怎么做网站的导航条,商业模式顶层设计案例,页面设计归运营管还是美工介绍 lambda表达式是一种局部类类型#xff0c;它含有一个构造函数#xff0c;和一个const成员函数operator()()。 lambda表达式除了能做参数外#xff0c;还能用于初始化一个声明为auto或者std::functionR(LA)的变量。R是lambda的返回类型#xff0c;LA是它的类…介绍 lambda表达式是一种局部类类型它含有一个构造函数和一个const成员函数operator()()。 lambda表达式除了能做参数外还能用于初始化一个声明为auto或者std::functionR(LA)的变量。R是lambda的返回类型LA是它的类型参数列表。 组成部件 一个可能为空的捕获列表指明定义环境中哪些名字能够被用在lambda表达式中以及这些名字是被拷贝还是引用。捕获列表位于[]中。 补充 静态变量不能也不需要被捕获。一个可选的参数列表。指明所需要的参数位于()中。补充 当无参数时可以省略。一个可选的mutable修饰符当需要修改通过值捕获的变量的副本时位于()之后。一个可选的noexcept修饰符表明无异常被抛出。位于mutable修饰符之后。一个可选的-形式的返回类型声明可与decltype一起搭配使用。一个表达式体指明要执行的代码位于{}块中。 实现模型 对于lambda表达式而言有着很多种表述方法并且有着多中优化途径。如果把lambda表达式看成是一种定义并使用函数对象的便捷方式那么便于理解。 假设有这么一个例子 void print_modulo(const vectorint v, ostream os, int m) {for_each(begin(v), end(v),[os, m](int x) {if (x % m 0) os x /n;}); }我们可以将其中的lambda表达式改写成一个函数对象 class Modulo_print {ostream os;int m; public :Modulo_print(ostream s, int mm) :os{ s }, m{ mm } {}void operator() (int x) const {if (x % m 0) os x /n;} };并且改写之前的例子 void print_modulo(const vectorint v, ostream os, int m) {for_each(begin(v), end(v),Modulo_print{os, m}); }我们把由lambda表达式生成的函数对象称为闭包对象 (闭包)。 如果lambda表达式通过引用 ([]) 捕获它定义环境中的每一个局部变量则其闭包对象则可以优化为简单的包含一个指向外层栈框架的指针。 捕获 lambda表达式的主要用途是封装一部分代码以便将其用做参数。 有些lambda表达式无需访问它的局部环境这样lambda表达式使用空引入符 [ ] 定义。 lambda引入符的形式有很多 [ ]空捕获列表在lambda表达式内部无法使用其外层上下文中的任何局部名字其数据需要从实参或者非局部变量中获得。[]通过引用隐式捕获。所有局部变量通过引用使用。[]通过值隐式捕获。所有局部变量通过拷贝使用这些副本是在lambda表达式的调用点获得的。[捕获列表] 显式捕获。通过引用或者值方式捕获其局部变量。捕获列表中可以出现this (通过值方式捕获) 和 紧跟…的名字以表示的元素。[, 捕获列表] 对于出现在捕获列表中的名字以值方式捕获不能以为名字前缀。捕获列表可以出现this。[, 捕获列表] 对于出现在捕获列表中的名字以引用方式捕获必须以为前缀捕获列表中不能出现this。 对于lambda表达式来说当把lambda传递给另一个线程时用值捕获更优通过引用或者指针访问其他线程中的内容是一种危险操作对于性能和正确性来说都是如此。 对于可变模板参数的捕获示例 template typename...Var void algo(int s, Var... var) { auto helper [s, var...]{return s * (h1(var...) h2(var...)); }; }生命周期 lambda表达式的生命周期可能比它的被调用者更长。当我们把lambda表达式传递给另一个线程或者存在别处以供后续使用的时候。 例如 void setup(Menu m) { Point p1, p2, p3; m.add(draw a triangle, []{m.draw(p1, p2, p3); }); //可能会发生程序错误 }当setup完成之后我们可能需要画一个三角型此时lambda表达式将会访问一个已经不存在的局部变量。 如果我们发现一个lambda表达式的生命周期可能比它的调用者更长则我们需要确保所有局部信息都已经被拷贝到闭包对象中去。 m.add(draw a triangle, []{m.draw(p1, p2, p3); });lambda与this 当lambda表达式被用在成员函数当中我们怎样去访问类成员变量呢我们通过捕获this指针来访问类成员对象。 例如: template typename T class Request {typedef typename vectorT::value_type result;functionresult(const vectorT) oper;vectorT values;result results; public:void execute(){[this] {results oper(values);};} };类成员变量是通过this访问的在lambda表达式中[this] 和 [] 互不兼容因此一不小心就可能在多线程程序中造成竞争条件。 mutable的lambda表达式 如果希望在lambda表达式修改函数对象的状态即修改通过值捕获的变量则可以使用mutable修饰符 void algo() {int count 100;[count]()mutable {return --count;}; }lambda表达式与返回类型 lambda表达式的大多数规则都是从类和函数借鉴过来的然而需要有两点需要注意 如果lambda表达式不需要任何参数则参数列表可以省略。因此lambda表达式的最简形式是[]{}。lambda表达式的返回类型可以有其本身推断得到而函数(方法)不行。 如果在一条lambda表达式的主体部分不包含return语句则其返回类型为void。 如果lambda表达式只包含一条return语句则返回类型是return表达式的类型。 其他情况必须显式定义一个返回类型。 lambda表达式的类型 任意两个lambda表达式的类型都不相同一旦两个lambda表达式的类型相同则模板实例化机制就无法识别它们了。 例如 auto algo [algo](char* b, char* a) {swap(*b, *--a); algo(b, a);};由于algo的类型并没有在使用之前被推断出来因此上面的写法是错误的。 使用function包装器可以存入函数对象。就可以保证在使用之前, algo的类型就已经知道了。 functionvoid (char*b, char*a) algo [](char* b, char* a) {swap(*b, *--a); algo(b, a);};如果我们只是想给lambda表达式起个名字而不会在主体内部递归的使用它。则 auto algo [](char* b, char* a) {swap(*b, *--a); };是没有问题的。 如果lambda表达式什么也不捕获则我们可以把它赋值给一个指向正确类型的函数指针。 double (*fun) (double a) [](double a) {return sqrt(a);};但行好事 莫问前程
http://www.yutouwan.com/news/296002/

相关文章:

  • 网站被镜像怎么办云网站制作的流程
  • 云鼎大数据888元建站泰州网站建设服务公司
  • 电子商务网站系统规划报告asp网站做消息提醒功能
  • 江西建设三类人员网站网站关键词快速排名服务
  • 菏泽营销网站建设公司网络营销的三大基础
  • 低价网站建设顺德平面设计师必看的网站
  • 宜春网站制作最近的国际新闻大事件
  • 建设网站网络公司wordpress设置为中文
  • 小辣椒昆明网站开发做个平台网站怎么做的
  • destoon 手机网站模板网络推广公司介绍
  • 网站建设开发哪家质量好如何设立官方网站
  • 广州网捷网站建设技术有限公司开源镜像网站开发
  • 网站建设商标注册多少类目深圳软件外包公司排行榜
  • 网站开发中的抓包工具赣州模板建站开发
  • 中国建设工程标准化协会网站sql数据库添加网站
  • 企业组织网站建设方案网站建设对帮助信息的设置
  • 网站建好了 如何推广wordpress安装流程
  • 用自己的名字做网站域名最好用的设计网站
  • 网络公司给我做网站我有没有源代码版权吗免费开源cms内容管理系统
  • 网站后台添加内容网页不显示大象影视传媒制作公司
  • 长治做网站公司网站顶部展出的大幅广告
  • 网站建设与运营策划书iis 修改默认网站
  • 重庆建网站哪家售后服务比较好宁波网络推广平台
  • 广州自助网站制作合肥建设工程市场价格信息网
  • 网站开发综合实训报告域名网站有哪些
  • 工信部网站备案查不到甘肃酒泉建设银行网站
  • 设计好的商城网站建设网络公司网站快速排名技巧
  • 洛阳做网站排名免费自助建站软件下载
  • 企业网站改一下多少钱网站加速免费
  • 优狐网站建设深圳市做网站前十强