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

C++程序设计——常见C++11新特性

一、列表初始化

1.C++98中{}的初始化问题

        在C++98中,允许使用花括号{}对数组元素进行统一的列表初始化值设定,比如:

        但是对于一些自定义类型,就无法使用这样的方式进行初始化了,比如:

就无法通过编译,导致每次定义vector时,都需要先把vector定义出来,然后使用循环对其赋初始值,非常不便。

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

2.自定义类型的列表初始化

多个对象的列表初始化:

        多个对象想要支持列表初始化,需要给该类(模板类)添加一个带有initializer_list类型参数的构造函数。

注意:initializer_list是系统自定义的类模板,该类模板中主要有三个方法:begin()、end()迭代器,以及获取区间中元素个数的方法size()。

#include <initializer_list>
template<class T>
class Vector {
public://支持多个对象列表初始化Vector(initializer_list<T> lt): _capacity(lt.size()), _size(0){_arr = new T[_capacity];for (auto e : lt) {_arr[_size++] = e;}}Vector<T>& operator=(initializer_list<T> lt) {delete[] _arr;_size = 0;for (auto e : lt) {_arr[_size++] = e;}return *this;}
private:T* _arr;size_t _capacity;size_t _size;
};

二、变量类型推导

1.为什么需要类型推导

        在定义变量时,必须先给出变量的实际类型,编译器才允许定义,但有些情况下可能不知道变量的实际类型,或类型写起来比较复杂。

        所有C++11中,可以使用auto根据变量初始化表达式类型来推导变量的实际类型,给程序的书写提供便利。

auto详细介绍

2.decltype类型推导

2.1为什么需要decltype

        auto使用的前提是:必须要对auto声明的类型进行初始化,否则编译器无法推导出auto的实际类型。但有些时候可能需要根据表达式运行完成后的结果类型进行推导,但是编译期间代码不会运行,此时auto也就无法完成推导了。

比如:

如果这样返回,结果就会出现问题,但如果能够使用加完之后的实际类型作为函数返回值类型,那么就不会出错了,但是这需要程序运行完后才能知道结果的实际类型。解决方法:

返回值类型追踪:

注意:auto并不能推导函数返回值类型,在这里只是起一个占位符作用。

2.2decltype的功能

decltype是根据表达式的实际类型推演出定义变量时所用的类型:

(1)推演表达式类型作为变量的定义类型;

(2)推演函数返回值类型;

(3)返回值类型追踪

注意:推演的过程中,并不会调用函数,都是在编译阶段完成的。

三、范围for循环

范围for详细介绍

四、final与override

final与override关键字介绍

五、智能指针

C++智能指针介绍与模拟实现

六、新增加容器

(1)静态数组array;

(2)循环单链表forward_list;

(3)unordered系列。

七、默认成员函数控制

1.显示缺省函数

        在C++11中,可以在默认成员函数定义或声明时,加上=default,从而显示的指示编译器生成该函数的默认版本。用=default修饰的函数称为显示缺省函数。

2.删除默认函数

如果想要限制某些默认函数的生成:

(1)C++98中:将该函数设置为private,并且只声明不定义。

(2)C++11中:只需要在该函数声明加上=delete即可,该语法指示编译器不生成对应函数的默认版本,用=delete修饰的函数称为删除函数。

八、右值引用

C++右值引用

九、lambda表达式

C++lambda表达式

相关文章:

C++程序设计——常见C++11新特性

一、列表初始化 1.C98中{}的初始化问题 在C98中&#xff0c;允许使用花括号{}对数组元素进行统一的列表初始化值设定&#xff0c;比如&#xff1a; 但是对于一些自定义类型&#xff0c;就无法使用这样的方式进行初始化了&#xff0c;比如&#xff1a; 就无法通过编译&#xff…...

Rust main 函数返回值类型不能是 String

是的&#xff0c;Rust 的 main 函数返回值类型不能是 String。 Rust 的 main 函数只能返回以下几种类型之一&#xff1a; ()&#xff1a;表示空类型&#xff0c;不返回任何值。i32&#xff1a;表示程序的退出码&#xff0c;通常非零值表示执行失败&#xff0c;0 表示执行成功…...

视频里的音乐怎么转换成mp3格式?

视频里的音乐怎么转换成mp3格式&#xff1f;视频里的音乐转换为mp3的原因有很多&#xff0c;主要是因为mp3格式是一种音频格式&#xff0c;文件大小较小&#xff0c;更易于存储和传输。相比之下&#xff0c;视频格式则是一种视频文件格式&#xff0c;虽然包含音频&#xff0c;但…...

CSS3 grid网格布局

文章目录 CSS3 grid网格布局概述grid属性说明使用grid-template-rows & grid-template-columns 定义行高和列宽grid-auto-flow 定义项目的排列顺序grid-auto-rows & grid-auto-columns 定义多余网格的行高和列宽row-gap & column-gap 设置行间距和列间距gap 简写形…...

SPSS如何进行均值比较和T检验之案例实训?

文章目录 0.引言1.均值过程2.单样本T检验3.独立样本T检验4.成对样本T检验 0.引言 因科研等多场景需要进行数据统计分析&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对均值…...

Packet Tracer - 配置交换机端口安全

Packet Tracer - 配置交换机端口安全 地址分配表 设备 接口 IP 地址 子网掩码 S1 VLAN 1 10.10.10.2 255.255.255.0 PC1 NIC 10.10.10.10 255.255.255.0 PC2 NIC 10.10.10.11 255.255.255.0 非法笔记本电脑 NIC 10.10.10.12 255.255.255.0 目标 第 1 部…...

一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块&#xff1a;基于 asyncio 的异步HTTP网络库, 资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【aiohttp】统计常量模块1 aiohttp.hd…...

Linux + 香橙派 + V4L2 + http 实现远程监控摄像头在网页端显示

项目场景&#xff1a; 项目需求&#xff0c;需要做一个基于边缘端的人脸识别远程监控摄像头并在网页前端展示 &#xff0c;这里采用国产香橙派作为边缘计算终端&#xff0c;安装ubuntu系统&#xff0c;系统中采用v4l2接口对摄像头进行获取&#xff0c;当客户端通过网页进行请求…...

《编码——隐匿在计算机软硬件背后的语言》精炼——第15-16章(十六进制,RAM)

“学习如春起之苗&#xff0c;不见其增&#xff0c;日有所长。” —— 宋代朱熹 文章目录 十六进制十六进制概述十六进制表字节到十六进制 存储器特定的读功能特定的写功能RAM大型RAM阵列 十六进制 十六进制概述 十六进制是一种适用于计算机的进制法。在十进制中&#xff0c;…...

leetcode.1376 通知所有员工所需的时间 - bfs/dfs + 树

1376. 通知所有员工所需的时间 目录 一、bfs 二、dfs 题目&#xff1a; 公司里有 n 名员工&#xff0c;每个员工的 ID 都是独一无二的&#xff0c;编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。在 manager 数组中&#xff0c;每个员工都有一个直属负责人&#x…...

AtCoder Beginner Contest 300——A-G题讲解

蒟蒻来讲题&#xff0c;还望大家喜。若哪有问题&#xff0c;大家尽可提&#xff01; Hello, 大家好哇&#xff01;本初中生蒟蒻讲解一下AtCoder Beginner Contest 300这场比赛的A-G题&#xff01; A - N-choice question 原题 Problem Statement Given integers A A A and…...

Go:值与指针

1. 计算机中的值 在百万年的演化历史中&#xff0c;人类对事物的属性进行了抽象&#xff0c;有了数量、精度、信息等概念的表示&#xff0c;对应的我们称之为整数、小数、文本文字等。计算机出现后&#xff0c;我们使用计算机对真实世界的问题进行建模&#xff0c;通过计算机的…...

【Linux】进程学习(2)---理解进程操作

文章目录 查看进程通过系统目录查看通过ps命令查看 通过系统调用获取进程标识符通过系统调用创建进程初识fork函数fork函数的返回值 进程状态阻塞与运行状态Linux内核源码中的进程状态运行状态-R浅度睡眠状态-S深度睡眠状态-D暂停状态-T僵尸状态-Z死亡状态-X 查看进程 通过系统…...

基于springcloud实现的医院信息系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 医疗信息就诊系统&#xff0c;系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗活动由各工作站配合完成&#xff0c;并将临床信息进行整理、处理、汇总、统计、分析等。本系统包括以…...

设计模式-创建型模式-(工厂、简单工厂、抽象工厂)

一、简单工厂模式 上代码 public class FoodFactory {public static Food makeFood(String name) {if (name.equals("noodle")) {Food noodle new LanZhouNoodle();noodle.addSpicy("more");return noodle;} else if (name.equals("chicken")…...

JAVA12新特性

JAVA12新特性 概述 2019年3月19日,java12正式发布了,总共有8个新的JEP(JDK Enhancement Proposals) JDK 12 is the open-source reference implementation of version 12 of the Java SE12 Platform as specified by by JSR 386 in the Java Community Process. JDK 12 reac…...

Nginx 静态文件、反向代理、负载均衡、缓存、SSL/TLS 加密、gzip 压缩 等等

Nginx的功能 1. 静态文件服务器2. 反向代理服务器3. 负载均衡4. 缓存5. SSL/TLS 加密6. URL 重写7. HTTP/28. WebSocket9. 反向代理缓存10. 安全限制11. gzip 压缩12. 请求限速13. 日志记录14. SSL 证书续订 Nginx 是一个高性能的开源 Web 服务器和反向代理服务器&#xff0c;它…...

Linux设备驱动模型(一)

一、sysfs文件系统 sysfs是一个虚拟文件系统&#xff0c;将内核总的设备对象的链接关系&#xff0c;以文件目录的方式表示出来&#xff0c;并提对设备提供读写接口。 二、kobject kobject是内核中对象表示的基类&#xff0c;可以认为所有的内核对象都是一个kobject kobject单…...

【Python入门篇】——Python基础语法(标识符与运算符)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…...

扩展 VirtualBox 已分配磁盘的方法

扩展 VirtualBox 已分配磁盘的方法 第一步&#xff1a;用VirtualBox命令行调整已分配磁盘的大小第二步&#xff1a;用windows磁盘管理工具扩展磁盘空间其他无关配置如何选择虚拟机的芯片组 注意&#xff1a;扩展操作只支持 vdi 格式的磁盘&#xff0c;就是VirtualBox自己的磁盘…...

【LeetCode】646. 最长数对链

646. 最长数对链&#xff08;中等&#xff09; 思路 这道题和 300. 最长递增子序列 类似&#xff0c;我们可以定义 dp 数组&#xff0c;其中 dp[i] 表示以 i 结尾的子序列的性质。在处理好每个位置后&#xff0c;统计一遍各个位置的结果即可得到题目要求的结果。 但是题目中强…...

Makefile教程(Makefile的结构)

文章目录 前言一、Makefile的结构二、深入案例三、Makefile中的一些技巧总结 前言 一、Makefile的结构 Makefile 通常由一系列规则组成&#xff0c;每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。 下面是 Makefile 规则的基本结构&…...

SpringMVC(后)SSM整合

10、文件上传和下载 10.1、文件下载 ResponseEntity用于控制器方法的返回值类型&#xff0c;该控制器方法的返回值就是响应到浏览器的响应报文 使用ResponseEntity实现下载文件的功能 RequestMapping("/testDown") public ResponseEntity<byte[]> testResp…...

【博弈论】【第一章】博弈论导论

博弈论导论 【例题】选择数字【例题】巴什博弈【例题】射手博弈博弈论的基本概念&#xff1a;参与人战略行动信息支付函数【例题】分100元 课程概述&#xff1a; 【例题】选择数字 两个参与人A和B&#xff0c;轮流选择[3,4,5,6,7,8,9]中的一个整数&#xff08;可重复)。当累计…...

keil移植linux(makefile)

文章目录 运行环境&#xff1a;1.1 freeRTOS_LED工程移植1)修改cubeMX配置2)setting设置3)launch设置4)修改makefile5)修改代码6)实验效果 运行环境&#xff1a; ubuntu18.04.melodic 宏基暗影骑士笔记本 stm32f427IIH6 stlink 9-24v可调电源 robomaster A 板 1.1 freeRTOS_L…...

C++——类和对象(3)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月6日 内容&#xff1a;C类和对象内容讲解 目录 前言&#xff1a; 1.运算符重载&#xff08;续&#xff09;&#xff1a; 2.赋值重载&#xff1a; 结尾&#xff1a; 前言&#xff1a; 在上一篇博客中我们再一次讲解了…...

itop-3568开发板驱动学习笔记(24)设备树(三)时钟实例分析

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录 生产者属性#clock-cells 属性clock-output-namesclock-frequencyassigned-clockclock-indicesassigned-clock-parents 消费者属性 设备树中的时钟信息以时钟树形式体现&#xff0c;时钟树包括时钟的属性和结…...

linux中使用docker部署微服务

目录 一、制作jar包&#xff08;如果看一眼很简单&#xff0c;可以直接使用结尾的jar&#xff09; 1.首先创建一个微服务 demo2 2.启动微服务&#xff08;在DemoApplication上右键执行启动就行&#xff09; 注意&#xff1a;其他操作导致的 可能遇到的报错 3.修改端口 4.新…...

操作系统考试复习—第三章 优先级倒置 死锁问题

当前OS广泛采用优先级调度算法和抢占方式&#xff0c;然而在系统中存在着影响进程运行的资源从而可能产生"优先级倒置"现象 具体解释为&#xff1a;在原本的调度算法设计中&#xff0c;高优先级进程可以抢占低优先级的CPU资源&#xff0c;先执行高优先级任务。但是存…...

OpenHarmony送显流程分析

OpenHarmony送显流程分析 引言 本文档主要记录OpenHarmony在渲染完成之后如何进行合成和送显流程的。这个过程牵涉的代码很多&#xff0c;而且流程也是比较繁琐的。所以我一定要坚持下来。千万不能半途而废&#xff0c;也不要想着一口气吃出一个胖子&#xff0c;路漫漫其修远兮…...

俄罗斯乌克兰克里米亚/荆州seo推广

网上找的资料&#xff0c;然后加以自己的实践和总结。 FCKeditor2.63下载 官方网站http://www.fckeditor.net/ dll控件&#xff1a;http://jaist.dl.sourceforge.net/project/fckeditor/FCKeditor.Net/2.6.3/FCKeditor.Net_2.6.3.zip 图片JS文件&#xff1a;http://jaist.dl.so…...

如何在网站做投票/云搜索系统

每篇文章我们都先抛出自己的疑问&#xff0c;然后随着阅读的深入&#xff0c;我们可以逐一解答这些问题 问题抛出&#xff1a; 1.JDK,JRE,JVM区别&#xff1f; JDK:总共分为三部分&#xff0c;java程序设计语言&#xff0c;Java虚拟机&#xff0c;Java API类库&#xff0c;JD…...

drupal 网站实例/上海百度竞价托管

卡布列克数(Kaprekar number)是具有以下性质的数&#xff1a;对于某个正整数X {\displaystyle X}在n进位下存在正整数 A, B 及 m&#xff0c;且0 < B < b n {\displaystyle 0X 2 A n m B {\displaystyle X^{2}An^{m}B}X A B {\displaystyle XAB}简单的说&#xff0c;…...

手机中国建设银行网站/整合营销传播方案案例

由于在Web端&#xff0c;JavaScript不能直接处理本地文件&#xff0c;因此可以在后台裁剪图片&#xff0c;或者利用html5的canvas来处理。 方法1&#xff1a;传送到后台剪切 步骤1&#xff1a;上传图片到后台&#xff0c;向前端返回图片URL 利用input标签&#xff0c;将文件发送…...

做推广的网站带宽需要多少钱/爱站网域名查询

点击上方“服务端思维”&#xff0c;选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」作者 | Zilliz出品 | 极客邦科技InfoQ究竟什么是数据库的事务&#xff1f;为什么数据库需要支持事务&#xff1f;为了实现数据库事务&…...

红色旅游网页设计/广州网站优化

第1步 - 从一段文字开始 在本练习中&#xff0c;我们希望强制将一个下降帽放在一段文本旁边。我们还希望丢弃上限是可扩展的&#xff0c;无论用户的默认字体大小如何 - 这意味着所有测量都将以ems或百分比表示。从一段简单的文字开始。 代码如下所示&#xff1a; <!DOCTY…...