C++发展历史:从C++98到C++26

有趣的图片

 C++标准遵循3年开发周期,并以发布年份命名。C++在临发布的一年前会进入“功能冻结期(feature freeze)”,即版本开发进入半稳定状态,不再添加重大功能及特性,着重于修复各种BUG。因此,直到2025年初,C++26都会增加新内容。

c++发展过程

 

 

C++26                                                        

C++26将会在“并发和并行性方面有重大改进”。而已经推出的C++ 23版本则沿袭了C++17的传统特征,完善了现有特性。但是,与C++ 98、C++11或C++20相比,改变略小。

C++23                                                               

主要特性包括:模板参数捕获、可变参数模板等。同时,它还引入了一些新的核心语言特性,如,UTF-8字符串字面量、更多的类型别名和using声明等。

此外,C++23还引入了一些新特性,如,简化的工作线程支持、原子操作、普通指针改进、区域性和字符编码以及可以按程度进行编辑的新字符串操作。

最值得一提的是,C++23中引入了this推导,可以像Python一样,使成员函数定义中隐式传递的this指针显式传递。你可以直接使用import std导入标准库,或者在std::print和std::println中应用C++20的格式字符串。

此外,在C++23中,开发者将获得扁平化关联容器。这些容器平衡了时间和空间复杂度。std::flap_map可取代std::map,而std::optional的接口将扩展为单子接口。

 C++历史标准 

Wikipedia

 

C++98

20世纪80年代末,Bjarne Stroustrup和Margaret A. Ellis撰写了著名的《The Annotated C++ Reference Manual》(简称ARM)。

当时,ARM根据独立的C++实现定义了C++的功能;并且,ARM为第一个C++标准——C++98ISO/IEC 14882)奠定了基础。

C++03

2005年,令人兴奋的事发生了。Technical Report 1(简称TR1)推出,是由C++标准化委员会成员建立的boost项目,推动现代C++向前迈出一大步,也为后续C++11的出现奠定了基础。

具体来讲,TR1有13个库。这些库也成为了下个C++版本的一部分,分别对应到正则表达式库、随机数库、智能指针(如,std::shared_ptr)和哈希表。

C++11

C++11被称为现代C++,它的许多特性从根本上改变了C++的编程方式。例如,C++11引入了TR1组件,还有移动语义、完美转发、可变模板或constexpr等特性。

但是,这些并不是全部。使用C++11,我们还获得了内存模型作为基础的线程模型以及线程API。

C++14

C++14是一个小型C++标准,引入了读写锁、泛化lambda和泛化constexpr函数。

实际上,C++14相对之前的11并没有太大改动,或者说更像C++11标准基础上的查漏补缺。C++14之后,还有17、20、23,所以,C++14更像个过渡版本。

C++17

C++ 17有两个突出的特性:并行的STL和标准化的文件系统。大约80个STL算法可使用执行策略执行。

这意味着,调用std::sort可以在C++中实现对容器vec并行排序的提示。此外,你还可以按顺序进行指定排序或向量化。

就像C++11一样,boost对C++17也产生了重大的影响,从boost中获得了文件系统以及3种新的数据类型:std::optional、std::variant和std::any。

C++20

C++ 20的革新从根本上改变了编写C++的方式,程度不亚于C++11,特别是以下四个重要特性:Ranges(范围库),Coroutines(协程),Concepts(概念)以及 Modules(模块)。

  • ·新的Ranges库能够直接在容器上表达算法、使用管道符组合算法,并将它们应用于无限数据流。
  • ·Coroutines使异步编程在C++中成为主流。Coroutines是协作任务、事件循环、无限数据流或管道的基础。
  • ·Concepts将改变我们对模板的思考和编程方式,是有效模板参数的语义类别。Concepts让你能够直接在类型系统中表达你的意图。如果出了什么问题,你会收到简洁的错误信息。
  • ·Modules将克服头文件的限制,也带来了诸多好处。例如,不再需要预处理器。最终,我们还将拥有更快的构建时间和更简单的包构建方式。

=========================================================================

 推荐公众号:Coders驿站

=========================================================================

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

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

相关文章

HandBrake 1.7 近日发布

导读HandBrake 1.7 近日发布,作为这个开源、免费和跨平台视频转码器应用程序的重大更新,适用于 GNU/Linux、macOS 和 Windows 系统。 在 HandBrake 1.6 发布近一年后,HandBrake 1.7 版本为 Linux 用户提供了许多好处,包括视频摘要…

百度文心一言(千帆大模型)聊天API使用指导

开篇不得不吐槽下百度,百度智能云平台首页跳转千帆大模型平台的按钮太多了,不同按钮跳转不同的子页面,不熟悉的,能把人找懵。入口太多,就导致用户不知道从何开始。本文就从一个前端开发人员的角度,教大家快…

【Golang】解决使用interface{}解析json数字会变成科学计数法的问题

在使用解析json结构体的时候,使用interface{}接数字会发现变成了科学计数法格式的数字,不符合实际场景的使用要求。 举例代码如下: type JsonUnmStruct struct {Id interface{} json:"id"Name string json:"name"…

查询Greenplum的视图和存储过程,指定schema

查询视图 SELECT schemaname,viewname AS view_name, definition AS view_definition FROM pg_views WHERE schemaname dcf_user; 查询存储过程 SELECT a.proname ,a.prosrc ,b.rolname FROM pg_proc a left join pg_roles b on a.proowner b.oid where b.rolname dcf…

【SpringCloud】微服务架构设计模式

一、聚合气微服务设计模式 最常见、最简单的设计模式,效果如图所示: 聚合器调用多个服务实现应用程序所需的功能 它可以是一个简单的 Web 页面,将检索到的数据进行处理并展示,也可以是一个更高层次的组合微服务,对…

OpenAI研发神秘“Q*”模型:科学家认输,AI赢了人类关键一战

图片来源:视觉中国 作者丨叶蓁 编辑丨康晓 出品丨深网腾讯新闻小满工作室 在山姆奥特曼(Sam Altman)被OpenAI前董事会突然罢免之前,数位研究人员向董事会发送了一封信,警告称他们发现了一种能够威胁到人类的强大人工…

护眼灯值不值得买?央视力推五款护眼台灯推荐

为了预防孩子近视,台灯已经成为许多家庭的标配。然而,灯光是一种看得见摸不着的商品,导致家长们选购台灯的核心指标可能只有两个:价格以及亮度。但很明显,这两项指标并不能决定台灯是否护眼。如果家长们不了解具体的判…

学习ComplexHeatmap复杂热图

iMeta | 复杂热图(ComplexHeatmap)可视化文章最新版,画热图就引它_生信宝典的博客-CSDN博客 作者贡献 顾祖光:研究课题的提出和设计, 软件编写,可视化,数据分析,论文编写,修订和审阅。 代码和…

FIB表与快速转发表工作原理

在一张路由表中,当存在多个路由项可同时匹配目的IP地址时,路由查找进程会选择掩码最长的路由项用于转发,即最长匹配原则。因为掩码越长,所处的网段范围就越小,网段的范围越小,就越能快速的定位到PC机的具体…

AC自动机(简单模板)

AC自动机,就相当于是在字典树上用kmp。next数组回退的位置为最大匹配字符串在字典树上的节点位置。 在获取字典树上的next数组的时候用的是BFS每次相当与处理的一层。 下图中红线为,可以回退的位置,没有红线的节点回退的位置都是虚拟原点。…

Nginx 配置错误导致的漏洞

目录 1. CRLF注入漏洞 Bottle HTTP头注入漏洞 2.目录穿越漏洞 3. http add_header被覆盖 本篇要复现的漏洞实验有一个网站直接为我们提供了Docker的环境,我们只需要下载下来就可以使用: Docker环境的安装可以参考:Docker安装 漏洞环境的…

Android笔记(十五):JetPack Compose的附带效应(二)-produceState和derivedStateOf

在本笔记中,将结合实例介绍produceState和derivedStateOf两个可组合函数。它们分别实现状态的转换。 (1)produceState将非Compose状态转换虫Compose状态 (2)derivedStateOf将多个状态转换成其他状态。 一、produceSta…

NFC技术简介

NFC简介 NFC(近场通信,Near Field Communication)是一种短距高频的无线电技术,由非接触式射频识别(RFID)演变而来。 NFC工作频率为13.56Hz,通常只有在距离不超过4厘米时才能启动连接,其传输速度有106 Kbit/秒、212 Kb…

「Whale 帷幄」连续入选科技榜单,AGI 冲击波正在加速行业洗牌

以 AGI 为底座,品牌 MarTech 正在经历一场前所未有的深度变革。 近日,弯弓研究院发布「中国 MarTech 500 强榜单」,以 2023 中国营销技术(MarTech)生态为研究对象,洞察行业现象与未来趋势。作为品牌数字化…

视频剪辑新招:批量随机分割,分享精彩瞬间

随着社交媒体的普及,短视频已经成为分享生活、交流信息的重要方式。为制作出吸引的短视频,许多创作者都投入了大量的时间和精力进行剪辑。然而,对于一些没有剪辑经验的新手来说,这个过程可能会非常繁琐。现在一起来看云炫AI智剪批…

AI制作的《大多数普通女孩的一生》——公开教程和工作流

内容来源:JiamigouCn ​这周由AI制作的《大多数普通女孩的一生》,在抖音爆火,获得新华网转发。到目前为止,全网还没有公开教程和工作流,需要花费800-2000购买。 本着AI社区共享原则,我委托公众号“楚思智能…

Debian12试用报告

环境: win11vbox 虚拟机 网络: host-only访问局域网 nat 访问外网, 配置为dhcp动态获取ip 遇到的问题: 偶尔卡死: nat每次开机都不生效, 外网无法访问; 开机后 重启网络可解决 sudo /etc/init.d/networking restart host-only倒是没问题, 内网正常访问 vim9还是用不习…

ubuntu22.04 arrch64版在线安装java环境

脚本 #安装java#!/bin/bashif type -p java; thenecho "Java has been installed."else#2.Installed Java , must install wgetwget -c https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz;tar -zxvf ./jdk-8u151-linux-arm6…

【Spring集成MyBatis】核心配置文件

文章目录 1. typeHandlers标签2. plugins标签通过PageHelper的API获取分页的信息 1. typeHandlers标签 可以重写类型处理器,或创建类型处理器来处理不支持/非标准的类型。选择性地将它映射到一个JDBC类型:如Java中的Date类型,将其存放到数据…

“土味出海”,屡试不爽!短剧出海引来新一轮爆发?

土味和“钱途”并存的短剧不仅在国内迅猛爆发,今年下半年以来海外市场多部爆火短剧出现,“短剧出海”的话题热度不断攀升,丝毫不差2021年网文出海的盛况。 “霸总的爱,日入千万刀”,是真实存在的! 据统计…