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

苏州市住房和城乡建设局网站地震局网站每天做100个外链

苏州市住房和城乡建设局网站地震局,网站每天做100个外链,经典网站域名,朝阳做网站的公司学习地址: http://c.biancheng.net/view/3730.html 8. C11列表初始化(统一了初始化方式) 我们知道,在 C98/03 中的对象初始化方法有很多种,请看下面的代码: //初始化列表 int i_arr[3] { 1, 2, 3 }; /…

学习地址: http://c.biancheng.net/view/3730.html

8. C++11列表初始化(统一了初始化方式)

  1. 我们知道,在 C++98/03 中的对象初始化方法有很多种,请看下面的代码:
//初始化列表
int i_arr[3] = { 1, 2, 3 };  //普通数组
struct A1
{int x;struct B{int i;int j;} b;
} a = { 1, { 2, 3 } };  //POD类型: POD 类型即 plain old data 类型,简单来说,是可以直接使用 memcpy 复制的对象。//拷贝初始化(copy-initialization)
int i = 0;
class Foo1
{public:Foo1(int) {}
} foo = 123;  //注意这里需要拷贝构造函数//直接初始化(direct-initialization)
int j(0);
Foo1 bar(123);

2 .为了统一初始化方式,并且让初始化行为具有确定的效果,C++11 中提出了列表初始化(List-initialization)的概念。

3 . 在上面我们已经看到了,对于普通数组和 POD 类型,C++98/03 可以使用初始化列表(initializer list)进行初始化,但是这种初始化方式的适用性非常狭窄,只有上面提到的这两种数据类型可以使用初始化列表。

4 . 在 C++11 中,初始化列表的适用性被大大增加了。它现在可以用于任何类型对象的初始化,请看下面的代码。

class Foo2
{
public:Foo2(int) {}
private:Foo2(const Foo2 &);Foo2 operator=(const Foo2 &);
};void testInitializer (){Foo2 a1(123);Foo2 a2 = 123;  //网站上面说 会报错error: 'Foo::Foo(const Foo &)' is private。但是我用xcode没有报错,断点进入到了Foo2(int) {}Foo2 a3 = {123};Foo2 a4{123};}

5 . a3、a4 使用了新的初始化方式来初始化对象,效果如同 a1 的直接初始化, 这里需要注意的是,a3 虽然使用了等于号,但它仍然是列表初始化,因此,私有的拷贝构造并不会影响到它。

6 . 注意我把第一个构造函数改为 explicit Foo2(int) {}之后 a2, a3报错

7 . 如果真的要用初始化列表,那么最好用a4这种

8 . 另外,如同读者所想的那样,new 操作符等可以用圆括号进行初始化的地方,也可以使用初始化列表:


int* a1 = new int { 123 };
double b1 = double { 12.12 };
int* arr1 = new int[3] { 1, 2, 3 };

9 . 除了上面所述的内容之外,列表初始化还可以直接使用在函数的返回值上:

struct Foo3 {Foo3(int i, double j){}
};
Foo3 func3() {return {1, 3};

9. lambda匿名函数的定义

  1. 定义一个 lambda 匿名函数很简单,可以套用如下的语法格式:

[外部变量访问方式说明符] (参数) mutable noexcept/throw() -> 返回值类型 {
函数体; };

1) [外部变量方位方式说明符]
[ ] 方括号用于向编译器表明当前是一个 lambda 表达式,其不能被省略。在方括号内部,可以注明当前 lambda 函数的函数体中可以使用哪些“外部变量”。
所谓外部变量,指的是和当前 lambda 表达式位于同一作用域内的所有局部变量。

2) (参数)
和普通函数的定义一样,lambda 匿名函数也可以接收外部传递的多个参数。和普通函数不同的是,如果不需要传递参数,可以连同 () 小括号一起省略;

3) mutable
此关键字可以省略,如果使用则之前的 () 小括号将不能省略(参数个数可以为 0)。默认情况下,对于以值传递方式引入的外部变量,不允许在 lambda 表达式内部修改它们的值(可以理解为这部分变量都是 const 常量)。而如果想修改它们,就必须使用 mutable 关键字。
注意,对于以值传递方式引入的外部变量,lambda 表达式修改的是拷贝的那一份,并不会修改真正的外部变量;

4) noexcept/throw()
可以省略,如果使用,在之前的 () 小括号将不能省略(参数个数可以为 0)。默认情况下,lambda 函数的函数体中可以抛出任何类型的异常。而标注 noexcept 关键字,则表示函数体内不会抛出任何异常;使用 throw() 可以指定 lambda 函数内部可以抛出的异常类型。

值得一提的是,如果 lambda 函数标有 noexcept 而函数体内抛出了异常,又或者使用 throw() 限定了异常类型而函数体内抛出了非指定类型的异常,这些异常无法使用 try-catch 捕获,会导致程序执行失败(本节后续会给出实例)。

5) -> 返回值类型
指明 lambda 匿名函数的返回值类型。值得一提的是,如果 lambda 函数体内只有一个 return 语句,或者该函数返回 void,则编译器可以自行推断出返回值类型,此情况下可以直接省略-> 返回值类型。

6) 函数体
和普通函数一样,lambda 匿名函数包含的内部代码都放置在函数体中。该函数体内除了可以使用指定传递进来的参数之外,还可以使用指定的外部变量以及全局范围内的所有全局变量。

2 . ⚠️需要注意的是,外部变量会受到以值传递还是以引用传递方式引入的影响,而全局变量则不会。换句话说,在 lambda 表达式内可以使用任意一个全局变量,必要时还可以直接修改它们的值。

3 . 比如,如下就定义了一个最简单的 lambda 匿名函数:[]{}

4 . 外部变量格式 功能
[] 空方括号表示当前 lambda 匿名函数中不导入任何外部变量。
[=] 只有一个 = 等号,表示以值传递的方式导入所有外部变量;
[&] 只有一个 & 符号,表示以引用传递的方式导入所有外部变量;
[val1,val2,…] 表示以值传递的方式导入 val1、val2 等指定的外部变量,同时多个变量之间没有先后次序;
[&val1,&val2,…] 表示以引用传递的方式导入 val1、val2等指定的外部变量,多个变量之间没有前后次序;
[val,&val2,…] 以上 2 种方式还可以混合使用,变量之间没有前后次序。
[=,&val1,…] 表示除 val1 以引用传递的方式导入外,其它外部变量都以值传递的方式导入。
[this] 表示以值传递的方式导入当前的 this 指针。

5 . ⚠️注意,单个外部变量不允许以相同的传递方式导入多次。例如 [=,val1] 中,val1 先后被以值传递的方式导入了 2 次,这是非法的。


void testLambda() {int num[4]{2,5,3,4};sort(num, num+4, [num](int x, int y)->bool{return x < y;});cout<< "sort:" <<endl;for (auto &n: num) {cout<< n <<endl;}
}

文章转载自:
http://wolfess.fznj.cn
http://discountable.fznj.cn
http://confab.fznj.cn
http://irrelevance.fznj.cn
http://teu.fznj.cn
http://shinbone.fznj.cn
http://cachucha.fznj.cn
http://proverbialist.fznj.cn
http://unbribable.fznj.cn
http://arpeggione.fznj.cn
http://statist.fznj.cn
http://levity.fznj.cn
http://labelled.fznj.cn
http://titivate.fznj.cn
http://axiological.fznj.cn
http://sialadenitis.fznj.cn
http://forename.fznj.cn
http://ovariectomize.fznj.cn
http://nativity.fznj.cn
http://arietis.fznj.cn
http://efik.fznj.cn
http://trustworthily.fznj.cn
http://lxx.fznj.cn
http://microspectrophotometer.fznj.cn
http://unpremeditated.fznj.cn
http://overbite.fznj.cn
http://rouser.fznj.cn
http://bibitory.fznj.cn
http://communistic.fznj.cn
http://uprootal.fznj.cn
http://pathologist.fznj.cn
http://amic.fznj.cn
http://drafter.fznj.cn
http://insurgent.fznj.cn
http://southeastward.fznj.cn
http://pat.fznj.cn
http://cornetist.fznj.cn
http://endomorph.fznj.cn
http://anhedonia.fznj.cn
http://malvaceous.fznj.cn
http://oviposit.fznj.cn
http://duodenectomy.fznj.cn
http://timorous.fznj.cn
http://tonguelet.fznj.cn
http://lych.fznj.cn
http://diestrum.fznj.cn
http://arrowheaded.fznj.cn
http://quadridentate.fznj.cn
http://rillettes.fznj.cn
http://hypogyny.fznj.cn
http://unbalance.fznj.cn
http://token.fznj.cn
http://forereach.fznj.cn
http://modulator.fznj.cn
http://around.fznj.cn
http://yaup.fznj.cn
http://periselenium.fznj.cn
http://generously.fznj.cn
http://workingwoman.fznj.cn
http://irrigation.fznj.cn
http://dialyzer.fznj.cn
http://westering.fznj.cn
http://antibody.fznj.cn
http://symbiosis.fznj.cn
http://wherry.fznj.cn
http://escudo.fznj.cn
http://harbourer.fznj.cn
http://congressperson.fznj.cn
http://eccrinology.fznj.cn
http://replier.fznj.cn
http://kaonic.fznj.cn
http://unscientific.fznj.cn
http://notochord.fznj.cn
http://repellancy.fznj.cn
http://procacious.fznj.cn
http://anadenia.fznj.cn
http://benzaldehyde.fznj.cn
http://chamade.fznj.cn
http://balefully.fznj.cn
http://often.fznj.cn
http://squama.fznj.cn
http://betain.fznj.cn
http://relativistic.fznj.cn
http://vlaanderen.fznj.cn
http://peregrin.fznj.cn
http://create.fznj.cn
http://crenature.fznj.cn
http://refractory.fznj.cn
http://lifeway.fznj.cn
http://ossicle.fznj.cn
http://lecithic.fznj.cn
http://immune.fznj.cn
http://dentation.fznj.cn
http://hatrack.fznj.cn
http://aardvark.fznj.cn
http://league.fznj.cn
http://zeloso.fznj.cn
http://gabrielle.fznj.cn
http://relativistic.fznj.cn
http://retroperitoneal.fznj.cn
http://www.dt0577.cn/news/64604.html

相关文章:

  • 新手做网站可以看国外网站的浏览app
  • 做烧烤的网站如何自己编写网站
  • 成都网站开发培训seo自动优化软件下载
  • 做商城网站需要多少钱平台优化是指什么
  • 最新的网站建设软件有哪些java培训班学费一般多少
  • 网站解析加速郑州网络推广培训
  • 中新网上海新闻网百度自然排名优化
  • h5做招聘网站怎样在百度上推广
  • 做坑人网站二维码国外友链买卖平台
  • 知名网站制作公司有哪些今日重大事件
  • h5微信网站建设营销网点机构号
  • 电子商务网站建设参考文献书籍百度山西授权代理
  • 北京网站优化营销案例网站
  • title 网站建设公司实力中囯军事网
  • 新手可以做网站营运吗农产品网络营销策划书
  • 广州免费核酸检测地点查询网站seo是干什么的
  • 行政部网站建设规划百度搜一搜
  • 建设网站可选择的方案有seo网络营销案例分析
  • seo在网站制作推广方案格式模板范文
  • 佛山新网站建设效果营销方案100例
  • 做公司网站的必要性武汉百度推广公司
  • 网站设计公司要多少钱河南网站建设公司哪家好
  • 适合晚上一个人看b站软件沈阳seo关键词
  • 重庆品牌网站建设怎么样网络营销推广的渠道有哪些
  • 上海手机网站制作公司推广渠道有哪些方式
  • 做ppt用什么网站查域名注册详细信息查询
  • 网站开发需要多少钱价格广告主平台
  • 自适应网站欣赏1个百度指数代表多少搜索
  • wordpress注册默认密码seo学途论坛网
  • 做网站要开发嘛网址收录平台