C++11(一)

news/2024/5/19 17:20:43/文章来源:https://blog.csdn.net/zhu_pi_xx/article/details/128071622

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸
在这里插入图片描述

文章目录

  • 一、列表初始化
    • initializer_list
  • 二、声明
    • 1.auto
    • 2.decltype
    • 3.nullptr
  • 三、C++11 STL中的变化
    • 1.array
    • 2.forward_list
    • 3.STL其他变化
  • 四、C++关键字新功能
    • 1.defualt强制生成
    • 2.delete
    • 3.final
    • 4.override

一、列表初始化

之前呢{}就是对于结构体和数组进行统一地列表初始值设定
C++11扩大了用大括号括起来地列表初始化的使用范围,使其可对所有的内置类型和用户自定义类型,使用列表初始化时,可添加等号,也可以不加

strcut Point
{Point(int x=1,int y=1):_x(x),_y(y){}int _x;int _y;  
};
int main()
{int x1=1;int x2={3}int x3{2};int array1[]{1,2,3,4,5};//直接就去掉=int array2[5]{0};Point p(1,2);//调用构造函数初始化Point p{1,2};Point p = {1,2};//C++11种列表初始化也可以适用于new表达式中int*pa =new int[4]{0};return 0;
}

initializer_list

{}并不是运算符,所以说并不是重载{},{}其实是initializer_list

auto x={1,2,3,4}
cout<<typeid(x).name();//initializer_list<int>

其实,初始化列表本来用意是给容器用的

vector<int> v1={1,2,3,4,5,6};
vector<int> v2{1,2,3,4,5,6};
list<int> lt1={1,2,3,4,5,6};
list<int> lt2{1,2,3,4,5,6};

在这里插入图片描述
initializer_list也像是一个容器,可以像迭代器一样的去访问,但是initializer_list是一个写死的数组,不支持push_back和pop_back

在这里插入图片描述
C++11之后,所以的容器都增加了initializer_list的构造函数。
那既然initializer_list主要是为容器而产生的,那结构体/类成员为什么也支持呢

vector<Date> v1={d1,d2,d3};
vector<Date> v2={{1,2,3},{2,3,4},{3,4,5}};

同时,initializer_list也能够初始化pair,所以map也能够使用

二、声明

1.auto

auto就是自动推导类型,但是它不能作为参数的类型自动推导

void func(auto a);//也就是说这是不行的

在某些场景下就非常好用,但是也有弊端,auto会降低可读性

map<string,string>::iterator it = x.begin();
auto it = x.begin();

2.decltype

declare type
用户声明类型,也可以理解为推导类型

像我们以前使用的typeid(x).name(),它只能够知道是哪种类型,但是不能够拿这个得到的字符串再去定义对象

typeid(x).name() y=20;//报错
//而C++11新增了关键字decltype来解决
decltype(x) y=20;

3.nullptr

源码中,有这样一段代码

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

也就是说,在C++中,C的NULL被定义成了字面量0,因为0既能代表常量也能代表地址,由于清晰安全的角度,C++11中有了nullptr,用于表示空指针。

三、C++11 STL中的变化

C++11新增容器
1.unordered_set
2.unordered_multiset
3.unordered_map
4.unordered_multimap
5.array
6.forword_list

1.array

array相比如vector而言,是一个静态的数组

template<class T,size_t N/*非类型模板参数*/> class array;

为什么有array?
①希望数组容器化
②C的数组边界问题
C的数组采用的方式是设岗抽查,只有少量的越界能够查出来,比如开了一个a[10]的数组,可能方式a[15]并不会被检查到。而给一个array,超过非类型模板N,就被查到了,所以array检查严格。

但是array并没有什么用处
因为array并不如vector,可以用vector+resize来进行开空间,效率上也得到了保证。而且array是开在栈上的,如果数据量过大,还会栈溢出

2.forward_list

forword_list就是单向链表,比起list双向循环链表来说,forword_list优势就只在于节省了一点空间,它只提供了insert_after在末尾插入,所以实际如果没有特殊需求,是不会用forward_list的

3.STL其他变化

①增加initializer_list的初始化化
②比较鸡肋的接口cbegin,cend
③移动构造和移动赋值(后面说)
④右值引用参数的插入
⑤手动缩容shrink_to_fit
等等

四、C++关键字新功能

1.defualt强制生成

Person(Person&&p) = defualt;
//因为移动构造需要满足条件才自动生成
//所以这里可以强制生成

2.delete

delete除了释放资源之外,还有另外的作用
比如我需要防拷贝

Person(const Person& p ) =delete;
Person& operator=(const Person&p) =delete;
//让编译不准生成

3.final

①修饰类,表示最终类
②修饰虚函数,表示该虚函数不能被重写

4.override

放在函数后面,表示它必须去重写某个父类的虚函数,如果达不到该条件,就进行报错。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_226996.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三维重建补充知识-0】视差、深度概念及其转换

一、基本概念 把手指放在眼前&#xff0c;分别闭上左、右眼&#xff0c;我们会发现手指与后边物体的相对位置是不同的&#xff0c;也即两眼所识别的两幅图像之间存在视觉差异&#xff0c;我们通过“视差”这一概念来表示这种差别。 该过程也可以通过两个处于同一平面的相机来模…

C++ 之 移动构造函数

1、左值和右值 C( 包括 C) 中所有的表达式和变量要么是左值&#xff0c;要么是右值。 通俗的左值的定义就是非临时对象&#xff0c;那些可以在多条语句中使用的对象&#xff0c;表达式结束后依然存在的持久化对象&#xff0c;所有的具名变量或者对象都是左值。右值是指临时的…

设置渐变边框色

如上图所示&#xff0c;需设置渐变边框色&#xff0c;左右边框颜色固定&#xff0c;上边框从左到右开始渐变&#xff0c;下边框从右到左开始渐变。 思考了很久&#xff0c;如果看作是一个div&#xff0c;则需要用到 border-image属性设置渐变色。也可以看作是两个div&#xff0…

CISAW信息安全保障人员认证考试难吗?

CISAW信息安全保障人员认证&#xff0c;作为信息安全行业相当热门的证书之一&#xff0c;其持证人数已超50%&#xff0c;在信息安全行业内占有一席之地&#xff0c;很多报考人都比较关心CISAW考试难不难&#xff1f;能通过吗&#xff1f;那接下来说一说CISAW证书考不好考&#…

常见的网络协议

目录 一、TCP/IP协议簇 二、网络设备与五层模型对应关系&#xff1a; 三、常用网络协议总结&#xff08;TCP/IP协议簇&#xff09; 四、应用层服务协议 五、传输层协议组 TCP_UDP 六、网络层协议 IP_ICMP_ARP 七、物理层协议 MAC子层协议 一、TCP/IP协议簇 OSI七层模型…

IBM MQ 故障诊断(一)

说明&#xff1a;本文主要是针对运维人员的手册。前面部分主要是应用三板斧的方式&#xff0c;后面的步骤可能会发散和具体深入一些。不过也不是严格的划分&#xff0c;读者就当看一遍杂文的方式来看待此文吧。 一&#xff0c;队列管理器的启停 QMGR的启停是故障诊断中遇到最…

[附源码]SSM计算机毕业设计线上图书销售管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

用huggingface.transformers在文本分类任务(单任务和多任务场景下)上微调预训练模型

诸神缄默不语-个人CSDN博文目录 transformers官方文档&#xff1a;https://huggingface.co/docs/transformers/index AutoModel文档&#xff1a;https://huggingface.co/docs/transformers/v4.23.1/en/model_doc/auto#transformers.AutoModel AutoTokenizer文档&#xff1a;ht…

Java#数据结构----2

目录 一.数据结构(树) 二.二叉树(任意节点的度<2) 二叉查找树又称为二叉排序树/二叉搜索树 平衡二叉树 平衡二叉树的旋转机制 三.红黑树 一.数据结构(树) 基本概念: 度: 每一个节点的子节点数量 树高: 树的总层数 根节点: 最顶层的节点 左子节点: 左下方的节点 右子节…

优维低代码:Redirect 路由重定向If 条件渲染

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…

2022年超实用的推特营销策略

Twitter推广需知的13条基础知识&#xff1a; 1、Twitter日活用户达1亿 2、Twitter月活用户3.25亿 3、Twitter广告价格比其他渠道便宜33% 4、每天产生5亿条推文 5、Twitter推广能够提高29%的线下交易 6、37%的Twitter用户在18到29岁之间 7、86%的带链接推文会比普通推文效…

Cerebral Cortex:调节γ振荡可以促进大脑连接性而改善认知障碍

摘要 老年痴呆症造成了巨大的全球经济负担&#xff0c;但目前还缺乏有效的治疗方法。最近的研究表明&#xff0c;脑电活动的伽马波段波&#xff0c;特别是40赫兹振荡&#xff0c;与高阶认知功能密切相关&#xff0c;可以激活小胶质细胞清除淀粉样蛋白&#xff0d;β沉积。本研究…

Flowable 中的网关、流程变量以及历史流程

今天这篇文章&#xff0c;松哥和大家梳理一下 Flowable 中的网关、流程变量以及历史流程的玩法。 1. 三大网关 Flowable 中网关类型其实也不少&#xff0c;常见的主要有三种类型&#xff0c;分别是&#xff1a; 排他网关并行网关包容网关 这三个里边最常用的当然就是排他网关…

Cesium中的DataSource和Entity关系

本章主要探讨一下Cesium中的DataSource和Entity。 介绍 首先简单说一下Entity与Primitive。 Cesium为开发者提供了丰富的图形绘制和空间数据管理的API&#xff0c;可以分为两类&#xff0c;一类是面向图形开发人员的低层次API&#xff0c;通常被称为Primitive API&#xff0…

连续时间系统的时域分析

一.微分方程的求解 1.求微分方程的齐次解 &#xff08;1&#xff09;写出特征方程并求解 2.写出齐次解 2.求微分方程的特解 已知 &#xff08;1&#xff09;根据表2-2&#xff0c;写出特解函数 ​​​​​​​ &#xff08;2&#xff09;带入并求解 3.完全解 二.微分方…

小杨哥陷入打假风波,会变成下一个辛巴吗?

最近&#xff0c;网红疯狂小杨哥频繁登上热搜。最初的起因是他花了1亿元在合肥一家高科技公司购买了5万多平方米的房产&#xff0c;作为他名下公司的全球总部&#xff0c;由此带来了争议。 据了解&#xff0c;该物业总建筑面积为53874.33平方米&#xff0c;包括1个生产综合体、…

使用扩展有效对齐 SwiftUI 内容,创建自定义 SwiftUI 方法以快速对齐项目并使您的代码看起来简洁明了(教程含源码)

在开发 iOS 应用程序时,对齐内容可能是一个耗时的过程。如果应用程序有多个屏幕,则需要在不同的地方完成这件事,并可能导致看起来杂乱无章的视图。 作为一个始终致力于让我的代码看起来简单和流线型的人,实现目标所需的大量Spacer()元素常常让我恼火,这就是为什么当我发…

APS软件的技术指标与特色

企业可能经常会因为无法掌握生产制造现场的实际产能状况及物料进货状况&#xff0c;导致物料及产能规划与现场详细作业排程难度增大&#xff0c;从而采取有单就接的接单政策与粗估产能的生产排程方式。这种方式就可能导致企业的生产状况频发&#xff1a;在提高对顾客的服务水平…

【树莓派不吃灰】Linux篇⑨ 学习 磁碟配额(Quota)与进阶文件系统管理(核心概念)

目录1. 磁碟配额 (Quota) 的应用与实作2.软件磁盘阵列 (Software RAID)3. 逻辑卷轴管理员 (Logical Volume Manager)4. 重点回顾❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-11-28 ❤️❤️ 本篇更新记录 2022-11-28 ❤️&…

如何采集需要验证码登录的网站数据

如何抓取网页上的数据,需要登录&#xff1f;随着互联网的发展&#xff0c;移动支付技术的普及&#xff0c;以及人们对内容进行消费的观念逐渐养成。有很多网站&#xff0c;需要付费后才能查看&#xff0c;或者是开通会员之类的才能查看。针对这类网站&#xff0c;我们如何快速的…