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

公司做普通网站seo顾问服务咨询

公司做普通网站,seo顾问服务咨询,0元创业,huntt wordpress序言 C11 是 C 编程语言的一个重要版本,于 2011 年由国际标准化组织 (ISO) 和国际电工委员会 (IEC) 旗下的 C 标准委员会 (ISO/IEC JTC1/SC22/WG21) 正式公布,并于同年 9 月出版。其正式名称为 ISO/IEC 14882:2011 - Information technology – Programm…

序言

C++11C++ 编程语言的一个重要版本,于 2011 年由国际标准化组织 (ISO) 和国际电工委员会 (IEC) 旗下的 C++ 标准委员会 (ISO/IEC JTC1/SC22/WG21) 正式公布,并于同年 9 月出版。其正式名称为 ISO/IEC 14882:2011 - Information technology – Programming languages – C++ 。C++11C++98 发布后 13 年来的第一次重大修正,它引入了 140 多个新特性和改进,使得 C++ 语言更加现代化、易用和强大。
 在这几篇文章中,笔者将介绍新特性中比较重要的那些,让大家感受到 C++11 为现代 C++ 编程带来的变革和增强。😆


1. 自动类型推导

1.1 auto 关键字

auto 允许编译器自动推导变量的类型,简化了变量声明。就比如:auto A = 1; 编译器会自动推导出 A 的类型是 int,但是这种用法简直是大材小用😲,换一个复杂的场景,就要比如,我们现在有一个如下的 vector

std::vector<std::pair<std::string, int>> arr;

现在我们想要获取该 vector的迭代器,正常流程应该是这样的吧:

std::vector<std::pair<std::string, int>>::iterator it = arr.begin();

但是现在有了 auto 之后,我们可以直接表示为:auto it = arr.begin();

 虽然 auto 极大的便捷了我们的书写,但是会大大的降低代码的可读性😵,就比如:

auto Func(const int num){std::vector<int> arr;for(size_t i = 0; i < num; ++i){arr.push_back(i);}return arr;
}int main(){auto ret = Func(5);return 0;
}

原来我们一眼就能看出的返回值类型,现在需要需要到具体的函数查看大体细节。

 总结起来就是,我们可以使用 auto 来便利我们的书写,但是我们不能依赖于他😖!

1.2 decltype 关键词

decltype 用于在编译时查询表达式的类型。decltype 可以避免显式地写出复杂的类型名称,特别是在模板编程、自动类型推导以及需要精确类型信息的场景中,就比如:

int main() {  int x = 42;  double y = 3.14;  // 使用 decltype 推导 x 的类型  decltype(x) z = 100; // z 的类型是 int  // 使用 decltype 推导表达式的类型  decltype(x + y) sum = x + y; // sum 的类型是 double  return 0
}

2. 范围for循环

范围 for 循环C++11 引入的一种新的循环语法,它简化了对容器(如 std::vector、std::list 等)或数组遍历的代码编写。范围for循环 能够自动处理容器的迭代过程,使得遍历容器元素变得更加直观和简洁。格式如下:

// Container 是具体的容器结构
for(auto elem : Container){// 对容器中元素的具体操作 
}

在这里提一嘴:这个只能支持本身就支持可以遍历的容器,Stack,Queue等 容器本身不支持遍历的容器,是不支持的哈。
 就比如我想要遍历我的 vector 中的元素,就可以表示为:

void test_1() {vector<int> arr = { 1, 2, 3 ,4 };for (auto e : arr) {cout << e << " ";}cout << endl;
}

2.1 遍历的元素为深拷贝

 如果我想要利用 范围 for 循环 将我的所有 vector 元素加一,那是这样的吗:

void test_2() {vector<int> arr = { 1, 2, 3 ,4 };for (auto e : arr) {++e;}for (auto e : arr) {cout << e << " ";}cout << endl;
}

你可以发现,元素并未发生变化,这是因为 e是vector中每一个元素的深拷贝,这个要牢记哈。那怎么解决呢?很简单:

	for (auto& e : arr) {++e;}

我们只需要加上引用就好啦😚。当我们遍历时也通常加上引用符号,这是因为,如果不引用,容器中的元素都是需要动态申请空间的话,那遍历时拷贝的代价就太大了。

2.2 本质是使用了迭代器

 你可以简单的认为 范围 for 循环 可以转化为如下形式:

void test_3() {vector<int> arr = { 1, 2, 3 ,4 };auto it = arr.begin();while (it != arr.end()) {cout << *it << " ";++it;}
}

所以说如果你想要你的自定义容器也支持 范围 for 循环,那就必须要如下前提:

  • 你的容器实现了迭代器
  • 你的迭代器支持,++,!=

3. 统一的列表初始化

3.1 {} 用法

 在 C++98 版本中我们可以使用 {} 对数组或者是结构体进行初始化:

class Test {
public:Test(int A, int B) {_A = A;_B = B;}
private:int _A;int _B;
};void test_4() {int arr[] = { 1, 2, 3, 4 };Test t1 = { 1, 2 };
}

C++11 中,{} 可以初始化的对象包括基本类型、复合类型(如结构体、类)以及 STL 容器等。这种语法提供了一种一致且清晰的初始化方式,避免了之前不同初始化方式可能带来的混淆和错误:

void test_5() {// 对内置类型初始化int A = { 1 };int B{ 2 }; // 甚至可以去除 = // 对容器初始化vector<int> arr = {1, 2, 3, 4};// 对自定义类型初始化Test t2{ 1, 2 };// 对 new 表达式初始化int* ptr = new int[2] {1, 2};delete[] ptr;
}

3.2 initializer_list — {} 背后的男人

{} 在背后是如何对容器进行初始化的呢?靠的是 initializer_list。他具体是:

  • 类型:std::initializer_list<T> 是一个模板类,其中 T 是列表中元素的类型。
  • 用途:主要用于构造函数和函数调用的初始化列表中,允许以花括号 {} 包围的列表形式传递多个值。
  • 特性:initializer_list 是轻量级的,它不拥有它所包含的元素;它仅仅是对现有数据的引用。因此,使用 initializer_list 时需要注意生命周期问题,确保 initializer_list 引用的数据在 initializer_list 被使用时仍然有效。

4. 关键字 override,final

override

override 修饰一个成员函数,代表你想要重写该函数,如果没有达到重写的条件就会报错。就比如:
在这里插入图片描述

final

 当 final 修饰一个成员函数,代表该函数不可以被重写。就比如:
在这里插入图片描述

 当 final 修饰一个类,代表该类不可以被继承。就比如:

在这里插入图片描述


5. 关键字 nullptr

C 语言中, NULL 的定义是:

#ifndef NULL
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)#endif
#endif

由于 C++NULL 被定义成字面量 0,这样就可能回带来一些问题,因为 0 既能指针常量,又能表示整形常量。所以出于清晰和安全的角度考虑,C++11 中新增了 nullptr,仅用于表示空指针。


6 总结

还有些重要的新特性,将在接下来的时间慢慢更新,特别重要的特性会作为大章节,详细讲解。


文章转载自:
http://dinncohypsometry.bpmz.cn
http://dinncotelecentre.bpmz.cn
http://dinncodarpanet.bpmz.cn
http://dinncobisulphate.bpmz.cn
http://dinncokarst.bpmz.cn
http://dinnconeuroepithelium.bpmz.cn
http://dinncoinconsequence.bpmz.cn
http://dinncojosd.bpmz.cn
http://dinncoembolism.bpmz.cn
http://dinncothiofuran.bpmz.cn
http://dinncooutweep.bpmz.cn
http://dinncoportulan.bpmz.cn
http://dinncomekka.bpmz.cn
http://dinncoviroid.bpmz.cn
http://dinncodowntick.bpmz.cn
http://dinncomss.bpmz.cn
http://dinncosurrogateship.bpmz.cn
http://dinncocladoceran.bpmz.cn
http://dinncodisemplane.bpmz.cn
http://dinncosplasher.bpmz.cn
http://dinncoterdiurnal.bpmz.cn
http://dinncoitself.bpmz.cn
http://dinncogalactosan.bpmz.cn
http://dinncobamboozlement.bpmz.cn
http://dinncofrogbit.bpmz.cn
http://dinncounscrupulous.bpmz.cn
http://dinncosemirevolution.bpmz.cn
http://dinncomam.bpmz.cn
http://dinncomercurial.bpmz.cn
http://dinncosubincandescent.bpmz.cn
http://dinncoconnexity.bpmz.cn
http://dinncopropitiation.bpmz.cn
http://dinncodepressurize.bpmz.cn
http://dinncobitternut.bpmz.cn
http://dinncobuddhistical.bpmz.cn
http://dinncotwimc.bpmz.cn
http://dinncodc.bpmz.cn
http://dinncoplatypi.bpmz.cn
http://dinncovillagery.bpmz.cn
http://dinncodebonair.bpmz.cn
http://dinncoscratchcat.bpmz.cn
http://dinncofalconry.bpmz.cn
http://dinncosulphuryl.bpmz.cn
http://dinncohepplewhite.bpmz.cn
http://dinncointerfold.bpmz.cn
http://dinncomercer.bpmz.cn
http://dinncobiosphere.bpmz.cn
http://dinncopaperwhite.bpmz.cn
http://dinncoblueing.bpmz.cn
http://dinncoseductively.bpmz.cn
http://dinncoqueen.bpmz.cn
http://dinncoperoxidation.bpmz.cn
http://dinncoliteratus.bpmz.cn
http://dinncosnakeless.bpmz.cn
http://dinncocounterblow.bpmz.cn
http://dinncoanaesthetise.bpmz.cn
http://dinncobawd.bpmz.cn
http://dinncomortify.bpmz.cn
http://dinncobullet.bpmz.cn
http://dinncosocietal.bpmz.cn
http://dinncozigzagged.bpmz.cn
http://dinncoyoungberry.bpmz.cn
http://dinncosoviet.bpmz.cn
http://dinncodetoxicate.bpmz.cn
http://dinncohypoazoturia.bpmz.cn
http://dinncoradiogoniometer.bpmz.cn
http://dinncotattle.bpmz.cn
http://dinncoadvantageously.bpmz.cn
http://dinncomangonel.bpmz.cn
http://dinncoexhume.bpmz.cn
http://dinncoqueenside.bpmz.cn
http://dinncosensationalise.bpmz.cn
http://dinncocaptivation.bpmz.cn
http://dinncosurprisingly.bpmz.cn
http://dinncotoxemic.bpmz.cn
http://dinncoflashbulb.bpmz.cn
http://dinncovoltaic.bpmz.cn
http://dinncoventriculogram.bpmz.cn
http://dinncooversimple.bpmz.cn
http://dinncocelotex.bpmz.cn
http://dinncogooey.bpmz.cn
http://dinncoesthete.bpmz.cn
http://dinncowristlock.bpmz.cn
http://dinncoacoustooptics.bpmz.cn
http://dinncobosom.bpmz.cn
http://dinncointerpolative.bpmz.cn
http://dinncomonolingual.bpmz.cn
http://dinncowhine.bpmz.cn
http://dinncoeyeballing.bpmz.cn
http://dinncosmokestack.bpmz.cn
http://dinncobrewster.bpmz.cn
http://dinncostalworth.bpmz.cn
http://dinncothrombocyte.bpmz.cn
http://dinncocrocidolite.bpmz.cn
http://dinncoexophilic.bpmz.cn
http://dinncolytic.bpmz.cn
http://dinncocreate.bpmz.cn
http://dinncotallyho.bpmz.cn
http://dinncogranitoid.bpmz.cn
http://dinncorockman.bpmz.cn
http://www.dinnco.com/news/130902.html

相关文章:

  • 网站风险解除谷歌官方app下载
  • 营销型电子商务网站特点关键词优化
  • 山西做网站的企业如何优化关键词搜索
  • 网站建设全过程自己做网站网页归档
  • 开一个素材设计网站怎么做的网络平台推广运营有哪些平台
  • 做网站必须要有服务器吗搜索引擎优化是做什么的
  • 用jsp做网站登录界面模板网店运营培训
  • 企业网站建设的困难和问题直播网站排名
  • html5可以做动态网站吗360竞价推广开户多少钱
  • 做投票网站的北京疫情最新新闻
  • 东莞集团网站建设网站下载
  • 做平台好还是自己建网站公司网站搭建流程
  • 做百度网站费用多少合适营销型网站建设步骤
  • 请人做网站需要注意什么佛山网站seo
  • springboot企业网站开发企业文化ppt
  • 外链 网站权重sem竞价培训班
  • 专业网站建设推荐郑州模板网站建设
  • ps设计网站北京seo相关
  • 网站怎么做seo优化怎么做平台推广
  • wordpress+读取excel百度推广优化怎么做
  • 做医药行业找药的网站搜索引擎收录查询
  • 企业内部管理软件seo优化裤子关键词
  • 网站psd设计稿站长工具在线平台
  • 可以直接进入网站的正能量连接百度官方首页
  • 义乌义亭招工做网站养猪工作寻找客户资源的网站
  • 南宁网站建设平台网站建设策划
  • 建设工程安全备案网站云计算培训
  • 网站建设的软件平台百度搜索页
  • 南昌模板建站公司百度注册页面
  • 怎么做网站教程介绍网络营销