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

做多个网站 买vps百度下载文章转wordpress

做多个网站 买vps,百度下载文章转wordpress,仿58同城分类信息网站源码,沧州万网信息技术有限公司作者:求一个demo 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习) 废话不多…

作者:求一个demo

版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习)

废话不多说,我们直接开始------>>>>>>

一、Lambda表达式

        Lambda表达式是C++11引入的一种匿名函数特性,允许你在需要函数的地方内联定义函数,不需要单独声明和定义命名函数。

1、基本语法

      (1)Lambda表达书基本组成部分:

[capture](parameters) -> return_type { // 函数体 
}

        ①capture:捕获子句,指定哪些外部变量可以在Lambda体内使用。

        ②parameters:参数列表(可选)。

        ③return_type:返回类型(可选,通常可以自动推导),这两种情况可以不写(无返回值;返回值可以被编译器推导)。

        ④函数体body:用于编写函数逻辑的地方。

        (2)Lambda表达式的底层是如何实现的?

        ①编译器生成一个匿名类。

        ②捕获的变量称为该类的成员变量

        ③重载了operator()。

2、捕获子句(捕获变量的几种方式)

        捕获子句(捕获列表)决定了Lambda表达式如何访问外部变量:

        ①[]:不捕获任何外部变量。

        ②[=]:以值捕获所有外部变量(包括this指针)。

        ③[&]:以引用捕获所有外部变量。

        ④[a,&b]:混合捕获,a以值捕获,b以引用捕获。

        ⑤[this]:捕获当前类的this指针。

        ⑥[=,&x]:默认以值捕获,但x以引用捕获。

        ⑦[&,x]:默认以引用捕获,但x以值捕获。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {int x = 10;int y = 20;    // 简单的lambda表达式auto print = []() { cout << "Hello Lambda!\n"; };//print();//调用lambda这个函数// 带参数的lambdaauto add = [](int a, int b) { return a + b; };cout << add(5, 3) << "\n";  // 输出8// 捕获外部变量auto capture = [x, &y]() {cout << "x: " << x << ", y: " << y << "\n";y++;  // 可以修改y,因为它是引用捕获// x++;  // 错误!x是值捕获,不能在函数内部修改};capture();cout << "y after capture: " << y << "\n";  // y被修改// 在STL算法中使用lambdavector<int> nums = {1, 5, 3, 4, 2};sort(nums.begin(), nums.end(), [](int a, int b) {return a > b;  // 降序排序});for (int n : nums) {cout << n << " ";}cout << "\n";// 可变lambda (允许修改值捕获的变量)auto mutable_lambda = [x]() mutable {x++;  // 可以修改,因为是mutablecout << "Inside mutable lambda: " << x << "\n";};mutable_lambda();cout << "Outside: " << x << "\n";  // 原x不变return 0;
}

3、按值捕获和按引用捕获

        (1)按值捕获:只可以输出内容,不可以对内容进行修改,捕捉列表中的变量为只读,是原变量的一份拷贝。如果按值捕获,并且想要修改拷贝的值,可以使用mutable关键字进行修饰(修改const修饰的变量也可以用mutable)。

auto mutable_lambda = [x]() mutable {x++;  // 可以修改,因为是mutablecout << "Inside mutable lambda: " << x << "\n";};

        (2)按引用捕获:获得该变量的引用,可以对该变量进行任何操作。

4、返回类型

        大多是情况下,编译器可以自动推导Lambda的返回值。但当函数体包含多个return语句且类型不同时,需要显示指定返回类型:

auto lambda = [](int x) -> double {//接收int类型参数,返回值类型为double类型(不写 -> double,编译器自动推导返回int类型)。if (x > 0) return 1.5;else return 2;//这里会隐式转换为double
};
auto lambda = [](int a, double b) { return a + b; };//返回更高精度的类型(double),此例属于普通lambda,int可以隐式转换为double。

二、区别(泛型Lambda表达式和普通Lambda表达式)

1、参数类型声明方式

        (1)普通Lambda(C++11):必须显示指定每个参数具体类型。

auto lambda = [](int a, double b) { return a + b; };

        (2)泛型Lambda(C++14):使用auto作为参数类型,编译器会根据实际调用推导类型。

auto lambda = [](auto a, auto b) { return a + b; };

2、模板机制

        (1)普通Lambda(C++11)

        ①相当于一个普通函数对象,参数类型固定。

        ②如果需要对不同类型操作,需要定义多个Lambda。

        (2)泛型Lambda(C++14)

        ①相当于一个函数模板(使用auto定义参数类型)。

        ②编译器会为每种调用参数组合生成相应的实例,例如可处理int+double等组合。

3、使用场景

        (1)普通Lambda(C++11)

        ①参数类型明确且固定的情况。

        ②需要明确控制参数类型时。

        (2)泛型Lambda(C++14)

        ①需要处理多种类型参数的时候。

        ②编写更通用的代码,特别是模板代码中。

        ③避免为不同的类型重复编写相似的Lambda。

4、实现原理

        (1)普通Lambda(C++11):编译器生成一个具有固定参数类型的函数调用运算符。

        (2)泛型Lambda(C++14):编译器生成一个模板化的函数调用运算符。

5、总结

        ①参数类型:普通Lambda必须显示指定;泛型Lambda可用auto自动推导。

        ②灵活性:普通Lambda只能处理固定类型;泛型Lambda可处理多种类型。

        ③实现方式:普通Lambda是普通函数对象;泛型Lambda是模板化函数对象。

        ④代码复用:普通Lambda需要为不同类型编写多个Lambda;泛型Lambda 可以一个Lambda处理多种类型。

        ⑤典型应用:普通Lambda适用于类型明确的简单操作;泛型Lambda适用于通用算法、模板代码。

三、校招面试常问内容

1、什么是Lambda表达式?优点是什么?

(1)什么是Lambda:匿名函数,可以在需要函数的地方内联定义。

(2)优点:代码简洁,捕获上下文变量方便。

2、Lambda表达式基本语法?

[capture](parameters) -> return_type { body }

捕获列表、参数列表、返回类型(可省略)、函数体。

3、Lambda的捕获列表有哪些?有什么区别?

        ①[]:不捕获任何外部变量。

        ②[=]:以值捕获所有外部变量(包括this指针)。

        ③[&]:以引用捕获所有外部变量。

        ④[a,&b]:混合捕获,a以值捕获,b以引用捕获。

        ⑤[this]:捕获当前类的this指针。

        ⑥[=,&x]:默认以值捕获,但x以引用捕获。

        ⑦[&,x]:默认以引用捕获,但x以值捕获。

4、值捕获和引用捕获的区别?

        ①值捕获:创建时拷贝变量,内部不能修改(使用mutable进行内部修改,不影响外部)。

        ②引用捕获:直接使用外部变量,内部修改会影响外部。

5、普通Lambda和泛型Lambda的区别?

        ①参数类型:普通Lambda必须显示指定;泛型Lambda可用auto自动推导。

        ②灵活性:普通Lambda只能处理固定类型;泛型Lambda可处理多种类型。

        ③实现方式:普通Lambda是普通函数对象;泛型Lambda是模板化函数对象。

        ④代码复用:普通Lambda需要为不同类型编写多个Lambda;泛型Lambda 可以一个Lambda处理多种类型。

        ⑤典型应用:普通Lambda适用于类型明确的简单操作;泛型Lambda适用于通用算法、模板代码。

6、Lambda表达式的底层是如何实现的?

        ①编译器生成一个匿名类。

        ②捕获的变量称为该类的成员变量

        ③重载了operator()。

7、Lambda和函数指针的区别?

        ①Lambda可以有状态(捕获变量),函数指针无状态。

        ②Lambda更灵活,可内联定义。

        ③无捕获的Lambda可(隐式)转换为函数指针。

// 定义一个函数指针类型
using FuncPtr = int(*)(int, int);int main() {// 无捕获的 Lambda 表达式auto lambda = [](int a, int b) {return a + b;};// 将 Lambda 表达式转换为函数指针FuncPtr funcPtr = lambda;// 使用函数指针调用int result = funcPtr(3, 5);cout << "Result: " << result << endl;return 0;
}

8、如何在类成员函数中使用Lambda?

        捕获this指针访问成员。

class MyClass {void func() {auto lambda = [this](){ this->memberFunc(); };}
};

最后,如有不足和错误的地方,期待私信指正!


文章转载自:

http://fAQqux7G.hxLpm.cn
http://36PSaA2F.hxLpm.cn
http://ks7OZAb4.hxLpm.cn
http://k3yyqzGq.hxLpm.cn
http://KiJFCCXD.hxLpm.cn
http://HKehVdb6.hxLpm.cn
http://o1kXhD7X.hxLpm.cn
http://c1HGewsj.hxLpm.cn
http://Xhxy0aNw.hxLpm.cn
http://nUratloS.hxLpm.cn
http://dgwZqIDY.hxLpm.cn
http://1bz3WmU0.hxLpm.cn
http://itnc6u5A.hxLpm.cn
http://cUhw5CR7.hxLpm.cn
http://o6o2rib2.hxLpm.cn
http://xIOkaI3x.hxLpm.cn
http://pP1Aj2Zz.hxLpm.cn
http://HBytCKG3.hxLpm.cn
http://LvNWNB5p.hxLpm.cn
http://PQIkULlU.hxLpm.cn
http://eLm8P2ey.hxLpm.cn
http://vJQkzAfm.hxLpm.cn
http://k6RhSSwh.hxLpm.cn
http://a1369jwU.hxLpm.cn
http://Dd05JkjW.hxLpm.cn
http://mqKRqEvA.hxLpm.cn
http://IiyYPmSz.hxLpm.cn
http://zHCKtMx9.hxLpm.cn
http://wnhzqY59.hxLpm.cn
http://Bd12GeT5.hxLpm.cn
http://www.dtcms.com/wzjs/748266.html

相关文章:

  • 上海做网站那家好做美工参考网站
  • 台州网站设计开发能推广的平台有哪些
  • 做网站常见问题模板中软属于国企还是央企
  • 怎么做视频网站教程西安公司网站如何建设
  • 网站源码下载网网站篡改搜索引擎js
  • 贵州网站建站做微信的微网站费用多少
  • 怎么样能够为一个网站做推广自动发货网站建设
  • 简历制作网站哪个好市场监督管理局职责范围
  • flash属于网页制作平台吗seo技术分享免费咨询
  • 青岛建立网站电话柳州做网站有kv
  • 网站商城怎么做广州企业网站推广
  • 外贸黄页网站建设工程项目管理中心
  • 跨境电商网站开发技术wordpress拖拽式编辑器
  • 公司网站建设教程注册城乡规划师有什么用
  • 升级wordpress 错误:连接服务器时出错_请检查设置.鞍山seo公司
  • 可以帮忙做网站做公司微信网站开发需要什么知识
  • 嘉兴云推广网站网络设计师的发展前景
  • 公司做个网站最近一周的热点新闻
  • 门户网站的重要性网站开发项目的规划与设计文档
  • 做网站需要规划好什么做网站会有侵权
  • 模板网站跟仿站的区别展览展示搭建设计
  • pc和移动版网站学php搞网站开发
  • 网站域名重定向西安seo网站排名优化公司
  • 做网站亏本河东区腾讯网站建设
  • 济南建设网站公司wordpress 漏洞攻击
  • 找网站建设需要问什么企业工商登记信息查询系统
  • wordpress 刷评论广州网站建设网站优化网站推广
  • 可以免费生成网站的软件网站开发亿玛酷适合5
  • 公司网站域名注册费用菏泽网站建设多少钱
  • 宝洁网站建设评价佛山企业网站建设咨询