【C++开篇】

首先初阶的数据结构相信大家已经学习的差不多了,关于初阶数据结构排序的相关内容的总结随后我也会给大家分享出来。C语言和C++有许多相同的地方,但也有许多不相同的地方。接下来的C++部分,我们主要是针对C++与C语言不同的地方来与大家进行分享。其中包括C++语法,STL,高阶数据结构。

好了,步入正题。今天我们这篇博客,先来大致介绍一下C++。

1. C++的发展史

时间阶段内容
1998年    

C++98

C++官方第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
2003年  C++03 C++标准第二个版本,语言特性无大改变,主要:修订错误、减少多异性
2011年   C++11增加了许多特性,使得C++更像一种新语言,比如:正则表达式、基于范围for循环、auto关键字、新容器、列表初始化、标准线程库等
2014年   C++14   对 C++11 的扩展,主要是修复 C++11 中漏洞以及改进,比如:泛型的 lambda 表达式, auto 的返回值类型推导,二进制字面常量等
2017年  C++17   在 C++11 上做了一些小幅改进,增加了 19 个新特性,比如: static_assert() 的文 本信息可选,Fold 表达式用于可变的模板, if 和 switch 语句中的初始化器等
2020年   C++20 自 C++11 以来最大的发行版 ,引入了许多新的特性,比如: 模块 (Modules) 、协 程 (Coroutines) 、范围 (Ranges) 、概念 (Constraints) 等重大特性,还有对已有特性的更新:比如Lambda 支持模板、范围 for 支持初始化等
2023年   C++23   C++23是一个小版本的更新,进一步完善和改进现有特性,增加了if consteval、falt_map,import std导入标准库等
2026年   C++26 

 制定ing

2.C++ 的参考文档

https://legacy.cplusplus.com/reference/

http:// https://zh.cppreference.com/w/cpp

http:// https://en.cppreference.com/w/

        第一个链接不是C++官网文档,标准也只有更新到C++11,但是以头文件形式呈现,内容比较易懂好懂。后两个链接分别是C++官网文档和英文版,信息很全,更新到了最新的C++标准,但是相比第一个不那么容易看,几个文档各有优势,我们结合者使用。

3.C++重要性

TIOBE排行榜是根据互联网上有经验的程序员,课程和第三方厂商的数量,并使用搜索引擎以及Wikipedia,Amazon,YouTube和Baidu(百度)统计出来的排名数据,只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量的多少。

以下是当前最新的语言排行榜

4.C++在工作领域中的应用

C++ 的应用领域服务器端,游戏(引擎),机器学习引擎,音视频处理,嵌入式软件,电信设备,金融应用,基础库,操作系统,编译器,基础建构,基础工具,硬件交互等很多方面都有。

  1. 大型系统软件的开发。如编译器,数据库,操作系统,浏览器等等。
  2. 音视频处理。常见的音视频开源库和方案有FFmpeg,WebRTC,Mediasoup,ijkplayer,音视频已开展最主要的技术栈是C++。
  3. PC客户端的开发。一般是开发Windows上的桌面软件。比如WPS之类的,技术栈的话一般是C++和QT,QT是一个跨平台的C++图形用户界面程序。
  4. 服务端开发。各种大型应用网络连接的高并发后台服务。这块Java也比较多,C++主要用于性能要求比较高的地方。如:游戏服务,流媒体服务,量化高频交易服务等。
  5. 游戏引擎开发。很多游戏引擎就是用C++开发的有些字引擎的开发要掌握C++基础和数据结构,学习图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎代码可以学习UE4,Cocos2d-x等开源引擎实现。
  6. 嵌入式开发。嵌入式开发具有计算能力的主板嵌入到机器装置或者电子装置的内部,通过软件能够控制这些装置。比如:手环,摄像头,扫地机器人,智能音箱,门禁系统,车载系统等等。粗略一点嵌入式开发主要分为嵌入式应用和嵌入式驱动开发。
  7. 机器引擎学习。机器学习底层的很多算法都是C++实现的,上层使用python封装起来。如果你只想准备数据训练模式,那么学会python基本上就够用了,如果你想做机器学习系统的开发,那么要学会C++。
  8. 测试开发/测试。每个公司研发团队,有研发就有测试,测试分为测试开发和功能测试,测试开发一般是使用一些测试工具,设计测试用例,然后写一些脚本进行自动化测试,性能测试等,有些还需要自行研发一些测试工具。功能测试主要是根据产品的功能,设计测试用例,然后手动的方式进行测试。

5.C++的学习建议 

        C++无疑是最具影响力之一。作为一种强大且灵活的语言,C++在软件开发、游戏制作、系统编程等领域都有着广泛的应用。然而,对于初学者或希望提高技能的程序员来说,C++的复杂性往往令人望而却步。本文旨在探讨有效的学习方法,帮助大家高效率的掌握C++。

C++难学吗?

  • 首先在这里告诉大家,C++是一个相对于难学难精的语言,相比于其他的语言的学习难度要大一些。这里有历史包袱的问题,也有语言本身的设计和发展的一些问题。当然坚持,多练,多深究,多理解。与此同时多接触一些别人的学习分享也会得到很好的效果。
  • 在这里,我建议把我博客中分享的代码都尽量的实现练习一遍,理解对应的知识。除此之外,可以摘录出重难点,多参考一些经典的书籍。

6. 第一个C++程序

哈哈,在这里大家可能就有想到刚开始学C语言了。

#include <iostream>
using namesapce  std;
int mian()
{cout<<"Hello world!"<<endl;return 0;
}

在这里,和我一样的刚开始学的同学就会问  头文件咋没<stdio.h>了?using namespace std是干嘛呢的?咋没printf()了?cout和endl又是啥?

好喽,今天就先开个头,分享到这里,后续我会慢慢的给大家分享到的。

 如有错误,还望指出!!!

关注博主,优质内容不断更新!!!

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

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

相关文章

gin入门教程(7): 使用 Logrus + Lumberjack 创建日志中间件

结合 Logrus 和 Lumberjack&#xff0c;可以创建一个高效的日志中间件&#xff0c;用于记录请求和响应。以下是实现步骤&#xff1a; 1. 安装依赖 首先&#xff0c;确保安装了 Logrus 和 Lumberjack&#xff1a; go get github.com/sirupsen/logrus go get gopkg.in/natefin…

基于vite和vue3、 eslint、prettier、stylelint、husky规范

前言 在现代的前端开发中&#xff0c;代码规范非常重要。它可以提高团队的协作效率&#xff0c;减少代码错误&#xff0c;使代码更易于维护。为了实现代码规范化&#xff0c;我们可以使用一些工具来辅助我们的开发流程&#xff0c;包括eslint、prettier、stylelint、husky&am…

word中的内容旋转90度

在vsto、Aspose.Words 中&#xff0c;默认没有直接的 API 可以让表格整体旋转 90 度。然而&#xff0c;我们可以通过一些方式来实现类似的效果&#xff0c;具体思路如下&#xff1a; 将表格插入到一个形状&#xff08;Shape&#xff09;或文本框中&#xff0c;然后旋转该形状。…

DVD光盘解密工具 Xreveal v2.7.1 官方版

下载地址 【1】https://pan.quark.cn/s/a95d5fa38f48 【2】https://drive.uc.cn/s/1e81ba7ee01e4?public1 Xreveal是一款功能相当贴心给力的光碟工具&#xff0c;其功能可以帮助用户检测以及删除DVD、CD保护。它完全不含有任何的解密密钥以及BD转换表&#xff0c;它是基于官…

【Windows】电脑端口明明没有进程占用但显示端口被占用(动态端口)

TOC 一、问题 重启电脑后&#xff0c;启用某个服务显示1089端口被占用。 查看是哪个进程占用了&#xff1a; netstat -aon | findstr "1089"没有输出&#xff0c;但是换其他端口&#xff0c;是可以看到相关进程的&#xff1a; 现在最简单的方式是给我的服务指定另…

阿里云项目启动OOM问题解决

问题描述 随着项目业务的增长&#xff0c;系统启动时内存紧张&#xff0c;每次第一次启动的时候就会出现oom第二次或者第n的时候&#xff0c;就启动成功了。 带着这个疑问&#xff0c;我就在阿里云上提交了工单&#xff0c;咨询为什么第一次提交失败但是后面却能提交成功尼&a…

HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)

1. HarmonyOS Style 、 Extend、自定义扩展&#xff08;AttributeModifier、AttributeUpdater&#xff09; Styles装饰器&#xff1a;定义组件重用样式   ;Extend装饰器&#xff1a;定义扩展组件样式   自定义扩展&#xff1a;AttributeModifier、AttributeUpdater 1.1. 区…

SpringBoot 下的Excel文件损坏与内容乱码问题

序言 随着打包部署的方式的改变&#xff0c;原本正常运行的代码可能带来一些新的问题&#xff0c;比如我们现在使用SpringBoot 的方式生成Jar包直接运行&#xff0c;就会对我们再在Resource下的Excel文件产生影响&#xff0c;导入与预期不符的情况发生cuiyaonan2000163.com 比…

Anchor DETR论文笔记

原文链接 [2109.07107] Anchor DETR: Query Design for Transformer-Based Object Detection (arxiv.org)https://arxiv.org/abs/2109.07107 原文笔记 What 提出了一种新的基于锚点的查询设计&#xff0c;即将锚点编码为对象查询。 Why 对象检测任务是预测图像中每个对象…

el-table相关的功能实现

1. 表格嵌套表格时&#xff0c;隐藏父表格的全选框 场景&#xff1a;当table表格设置复选&#xff08;多选&#xff09;功能时&#xff0c;如何隐藏表头的复选框&#xff0c;不让用户一键多选。 <el-table :header-cell-class-name"cellClass">// 表头复选框禁…

机器视觉-相机、镜头、光源(总结)

目录 1、机器视觉光源概述 2、光源的作用 3、光谱 4、工业场景常见光源 4.1、白炽灯 4.2、卤素灯 4.3、 荧光灯 4.4、LED灯 4.5、激光灯 5、光源的基本性能 5.1、光通量 5.2、光效率 5.3、发光强度 5.4、光照度 5.5、均匀性 5.6、色温 5.7、显色性 6、基本光学…

【Linux | 网络I/O模型】五种网络I/O模型详解

1、数据传输过程 在 Linux 系统中&#xff0c;数据传输是通过 I/O 操作来实现的。I/O 操作是指数据从应用程序到内核&#xff0c;再到硬件设备&#xff08;如磁盘、网络接口&#xff09;的过程。 操作系统为了保护自己&#xff0c;设计了用户态、内核态两个状态。应用程序一般工…

基于云平台的智能家居管理系统设计与通信协议分析

案例 阅读以下关于 Web 系统架构设计的教述&#xff0c;在答题纸上回答问题1至问题3。 【说明】 某公司拟开发一个智能家居管理系统&#xff0c;该系统的主要功能需求如下: 1)用户可使用该系统客户端实现对家居设备的控制&#xff0c;且家居设备可向客户端反馈实时状态&#x…

Redis 线程控制 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 线程控制 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 线程控制 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis &a…

JavaScript part2

一.前言 前面我们讲了一下js的基础语法&#xff0c;但是这些还是远远不够的&#xff0c;我们要想操作标签&#xff0c;实现一个动态且好看的页面&#xff0c;就得学会BOM和DOM&#xff0c;这些都是浏览器和页面的&#xff0c;这样我们才能实现一个好看的页面 二.BOM对象 BOM…

Radar Fields: Frequency-Space Neural Scene Representations for FMCW Radar 笔记

Code 主要思想 文章提出了一种新的神经场表示方法——Radar Fields&#xff0c;用于从FMCW&#xff08;调频连续波&#xff09;雷达数据中恢复场景几何信息。与以往的依赖于光学成像&#xff08;如RGB相机和LiDAR&#xff09;的神经场方法不同&#xff0c;该研究利用了雷达的…

高级网络互联技术:AS3001与AS3000的路由交换方案

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

基于SSM的智能养生平台管理系统源码带本地搭建教程

技术栈与架构 技术框架&#xff1a;采用SSM&#xff08;Spring Spring MVC MyBatis&#xff09;作为后端开发框架&#xff0c;结合前端技术栈layui、JSP、Bootstrap与jQuery&#xff0c;以及数据库MySQL 5.7&#xff0c;共同构建项目。 运行环境&#xff1a;项目在JDK 8环境…

HarmonyOS 5.0应用开发——应用打包HAP、HAR、HSP

【高心星出品】 目录 应用打包HAP、HAR、HSPModule类型HAPHAR创建HAR建立依赖HAR共享内容 HSP创建HSP建立依赖同上HSP共享内容同上 HAR VS HSP 应用打包HAP、HAR、HSP 一个应用通常会包含多种功能&#xff0c;将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发…

【mysql】4-2. MySQL存储结构

MySQL存储结构 1 什么是表空间⽂件&#xff1f; 解答问题 表空间⽂件是⽤来存储表中数据的⽂件&#xff0c;表空间⽂件的⼤⼩由存储的数据多少决定&#xff0c;不同的表空间⽂件存储数据的种类也有所不同&#xff0c;在MySQL中表空间分为五类&#xff0c;包括&#xff1a;系统…