【C++11】常用新语法①(统一的列表初始化 || initializer_list || 声明 || STL新增容器 || 右值引用和移动语义 || 万能引用和完美转发)

【C++11】常用新语法①(统一的列表初始化 || initializer_list || 声明 || STL新增容器 || 右值引用和移动语义 || 万能引用和完美转发)
在这里插入图片描述

🔥个人主页:Forcible Bug Maker
🔥专栏:C++

目录

🌈前言

本篇博客主要内容:C++11的简介,以及其中较为常用的新语法。

之前部分内容都是基于C++98来进行展开的,在最开始几节语法的基础上自实现STL库中的容器,完善容器的过程中逐渐培养起C++的编程思维。C++11的一些新语法可能会对传统C++98的选手们产生一定的冲击,毕竟新语法就是一种新玩法,建议提前做好心理准备,开始本次的内容。

🔥C++11简介

在2003年C++标准委员会曾经提交了一份计数勘误表(简称TC1),使得C++03这个名字取代C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要时对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准十年磨一剑,第二个真正意义上的标准姗姗来迟。相比于C++98/03,C++11带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,所以要作为一个重点去学习。C++11增加的语法特性非常篇幅非常多,我们这里没办法一一讲解,所以博客中主要讲解实际中比较实用的语法。
C++11的官方介绍文档

🔥统一的列表初始化({}初始化)

C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。如:

structPoint{ int _x;int _y;};intmain(){ int array1[]={ 1,2,3,4,5};int array2[5]={ 0}; Point p ={ 1,2};return0;}

C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户的自定义类型,使用初始化列表时可添加等号(=),也可不添加

structPoint{ int _x;int _y;};intmain(){ int x1 =1;int x2{ 2};int array1[]{ 1,2,3,4,5};int array2[5]{ 0}; Point p{ 1,2};// C++11中列表初始化也可以适用于new表达式中int* pa =newint[4]{ 0};return0;}

创建对象时也可以使用列表初始化方式调用构造函数初始化:

classDate{ public:Date(int year,int month,int day):_year(year),_month(month),_day(day){  cout <<"Date(int year, int month, int day)"<< endl;}private:int _year;int _month;int _day;};intmain(){  Date d1(2022,1,1);// old style// C++11支持的列表初始化,这里会调用构造函数初始化 Date d2{ 2022,1,2}; Date d3 ={ 2022,1,3};return0;}
在这里插入图片描述

🔥std::initializer_list

在这里插入图片描述


介绍文档地址:戳这里~
std::initializer_list的类型:

intmain(){ // the type of il is an initializer_listauto il ={ 10,20,30}; cout <<typeid(il).name()<< endl;return0;}
在这里插入图片描述


std::initializer_list的使用场景:
std::initializer_list一般是作为构造函数的参数,C++11对STL中的不少容器就增加std::initializer_list作为参数的构造函数,这样就能便于初始化对象。也可以作为operator=的参数,从而允许用大括号赋值。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
intmain(){  vector<int> vt ={ 1,2,3,4,<

Read more

Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】

Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】

文章目录 * 一、前言 * 二、问题场景 * 三、开发环境配置(Vite) * 四、生产环境配置(Nginx) * 4.1 初始错误配置 * 4.2 正确配置方案 * 4.3 配置解析 * 4.4高级配置选项 * 五、常见问题排查 * 六、开发环境 vs 生产环境对比 * 七、总结 一、前言 在前后端分离架构中,前端访问后端资源(尤其是图片、文件等静态资源)的反向代理配置是一个常见且容易踩坑的问题。最近在开发一个 Vue3 + .NET8 的项目时,我就遇到了开发环境配置正常,但部署到生产环境后图片无法访问的问题。本文将详细记录这个问题的解决过程,并给出开发环境和生产环境的完整代理配置方案。 二、问题场景 * 前端:Vue3 项目,

By Ne0inhk
不用服务器也能让本地 Websocket 跑遍全网?cpolar帮我搞定了

不用服务器也能让本地 Websocket 跑遍全网?cpolar帮我搞定了

文章目录 * 前言 * 1. Java 服务端demo环境 * 2. 在pom文件引入第三包封装的netty框架maven坐标 * 3. 创建服务端,以接口模式调用,方便外部调用 * 4. 启动服务,出现以下信息表示启动成功,暴露端口默认9999 * 5. 创建隧道映射内网端口 * 6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号 * 7. 以基于go的socket客户端为例,通过公网连接java socket服务端 * 8. 通过git下载websocket框架 * 9. 创建客户端, 注意:Host值为上面复制的隧道公网地址!! * 10. 接着启动服务,与服务端连接,出现服务端返回的字样表示连接成功 * 11. 客户端在控制台输入信息,回车 * 12. 服务端出现客户端发送的信息 * 13. 服务端控制台输入消息,回车 * 14. 客户端收到服务端回复的消息,连接成功 * **总之,cpolar 让本地

By Ne0inhk
【Linux网络系列】:网络+网络编程(UDPsocket+TCPsocket)

【Linux网络系列】:网络+网络编程(UDPsocket+TCPsocket)

🔥 本文专栏:Linux网络 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 我们常苦苦寻找那个“正确”的选择,但或许,比选择更重要的是:鼓起勇气,让自己成为那个“使选择变正确”的人。 引入 在结束了Linux系统部分的学习之后,我们主要掌握了Linux的基本指令、进程与信号、进程间通信、线程等内容。通过这部分内容我们可以发现,它们主要围绕同一台设备上的一个或者多个进程展开。然而在当前的互联网时代,每一台计算机或设备都不是孤立存在的。正如人类具有社会属性,无法完全与世隔绝,当我们步入社会,必然需要与他人接触、建立联系、形成社交网络一样,计算机也需要与其他计算机进行通信,即数据交换。因此,计算机也不是一座“社交孤岛”。 由于计算机之间的通信涉及不同设备,要实现这种跨设备通信,就离不开我们今天要讨论的主题—— 网络 。在本篇博客中,我将从两个方面展开:首先带领大家认识 网络 ,并补充必要的 网络 基础知识;在具备一定基础后,我们将进一步学习 网络编程的相关内容。从本文开始,

By Ne0inhk
I.MX6U 开发板网络环境搭建----(电脑 WiFi 上网,开发板和电脑直连)--虚拟机双网口实现-- Ubuntu20.04

I.MX6U 开发板网络环境搭建----(电脑 WiFi 上网,开发板和电脑直连)--虚拟机双网口实现-- Ubuntu20.04

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门:linux专栏 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言 一、使用场景 二、VMware 设置 三、Ubuntu 设置 3.1设置ens37网络(即NAT 模式的网络适配器) 3.2、测试ubuntu上网功能 3.3、测试ubuntu和Windows互传功能 3.4设置桥接模式的网络适配器 1 的 IP 信息 3.5关闭防火墙 四、windows设置 五、开发板设置并ping测试 5.

By Ne0inhk