首页 > 编程语言 >C++各版本引入的新特性

C++各版本引入的新特性

时间:2024-10-25 23:31:08浏览次数:6  
标签:std 特性 cast C++ 版本 引入

作者:momo
链接:https://www.zhihu.com/question/355400393/answer/3245544440
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以下是C++各个版本的标准库特性:

C++98:
引入了以下新的库特性:
RTTI (运行时类型信息),包括dynamic_cast和typeid
类型转换运算符,如static_cast、dynamic_cast、const_cast和reinterpret_cast
mutable关键字
bool类型
模板实例化
成员模板
export关键字
标准库增加了一些新的内容,包括:本地化支持(locales)、bitset、valarray、auto_ptr、模板化的字符串、I/O流和复数1

C++03:
这是一个主要针对实现者的错误修复版本,以确保更大的一致性和可移植性。这个修订版解决了92个核心语言缺陷报告,125个库缺陷报告,并引入了一个新的语言特性:值初始化2

C++11:
引入了以下新的库特性:
std::tuple
std::any
std::optional
std::variant
std::string_view
std::invoke
std::apply
std::filesystem
std::byte
并集映射和集合
并行算法
std::sample
std::clamp
std::reduce
前缀求和算法
最大公约数和最小公倍数
std::not_fn
字符串转换为/从数字

C++14:
引入了以下新的库特性:
标准库类型的用户定义字面量
编译时整数序列
std::make_unique

C++17:
引入了以下新的库特性:
概念库
同步缓冲输出流
std::span
比特操作
数学常数
std::is_constant_evaluated
支持数组的std::make_shared
字符串上的开始与结束检查
检查关联容器是否有元素
std::bit_cast

C++20:
引入了以下新的库特性:
概念库
同步缓冲输出流
std::span
比特操作
数学常数
std::is_constant_evaluated
支持数组的std::make_shared
字符串上的开始与结束检查
检查关联容器是否有元素
std::bit_cast

C++23:
标准引入了以下新特性:
模块“std”:这是一个标准库模块,预计将改善编译。
if consteval:这是一个关于即时函数(immediate function)的特性,即consteval函数
Deducing this(P0847):这是C++23中最主要的特性之一。msvc在去年3月份就已支持该特性,可以在v19.32之后的版本使用。
std::expected(P0323):该特性用于解决错误处理的问题,增加了一个新的头文件
Formatted Output(P2093):该提案就是 std::print()。
import std(P2465)
out_ptr(P1132r8)
auto (x) decay copy(P0849)
简化隐式移动
修复范围for循环中的临时变量
多维和静态运算符[]
Unicode改进
静态constexpr在constexpr函数中

标签:std,特性,cast,C++,版本,引入
From: https://www.cnblogs.com/ALaterStart/p/18503447

相关文章

  • 每日OJ题_牛客_NC383主持人调度(一)_排序​_C++_Java
    目录牛客_NC383主持人调度(一)_排序题目解析C++代码Java代码牛客_NC383主持人调度(一)_排序主持人调度(一)_牛客题霸_牛客网(nowcoder.com)描述:        有n 个活动即将举办,每个活动都有开始时间与活动的结束时间,第i 个活动的开始时间是starti ,第i 个活动......
  • 详解c++中的set_difference函数
    set_difference功能描述:求两个集合的差集函数原型:set_difference(iteratorbeg1,iteratorend1,iteratorbeg2,iteratorend2,iteratordest);//求两个集合的差集//注意:两个集合必须是有序序列//beg1容器1开始迭代器//end1容器1结束迭代器//beg2容......
  • C++之内存管理与模板初级
    内容介绍Ⅰ.C++内存管理1.C/C++内存分布2.C与C++动态内存管理方式对比2.1C中动态内存管理方式2.2C++中内存管理方式3.new和delete的底层实现原理(了解)Ⅱ.模板初阶1.模板介绍2.函数模板3.函数模板参数匹配原则4.类模板Ⅰ.C++内存管理1.C/C++内存分布intn1=1;......
  • 聊聊gitlab免费版和收费版本有哪些区别
    GitLab,一款受欢迎的代码托管和持续集成工具,有多个版本,包括免费版(GitLabCommunityEdition)和多种收费版本(GitLabEnterpriseEdition)。这些版本主要有以下不同:1、功能上的差异;2、性能与可扩展性;3、专业支持;4、集成与API;5、定价与许可;6、安全性与合规性;7、更新与维护。1、功能......
  • 【c++篇】:解析c++类--优化编程的关键所在(三)
    感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢个人主页:余辉zmh–CSDN博客文章所属专栏:c++篇–CSDN博客文章目录一.构造函数的初始化列表1.1构造函数体的赋值1.2初始化列表1.3`explicit`关键字二.静态`static`成员2.1.静态成员变量......
  • C++11中lambda表达式与包装器
    目录1.lambda表达式1.1引入lambda表达式1.2lambda表达式用法1.3函数对象与lambda表达式2.包装器2.1function包装器2.2bind1.lambda表达式在C++98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。//lambda表达式#include<iostream>#inc......
  • 如何在Qt框架中使用C++进行跨平台开发
    摘要:使用Qt框架结合C++实现跨平台开发的要点涉及1、选择合适的Qt版本及工具集、2、掌握QtCreator与Qt库的使用、3、深入理解信号与槽机制、4、遵循模块化和解耦的设计原则、5、依据不同平台进行特定优化。特别地,掌握QtCreator与Qt库的使用是基础,该集成开发环境(IDE)包含了代码编辑......
  • 打卡信奥刷题(114)用C++工具信奥P1145[普及组/提高] 约瑟夫
    约瑟夫题目描述nnn个人站成一圈,从某个人开始数数,每次数到mmm的......
  • Linux下使用valgrind分析C++程序的内存泄漏
    目录一.前言二.下载安装三.使用valgrind分析内存泄漏一.前言这篇文章介绍一下Linux系统中如何使用valgrind分析C++程序的内存泄漏。二.下载安装下载地址:官网。或者直接使用命令aptinstallvalgrind安装。三.使用valgrind分析内存泄漏先看代码//main.cpp#inc......
  • C++获取当前时间并格式化为字符串
    代码一#include<iostream>#include<chrono>intmain(){ autonowTime=std::chrono::system_clock::now(); autonowTimeT=std::chrono::system_clock::to_time_t(nowTime); autopNowTm=std::localtime(&nowTimeT); charbuf[128]; std::strfti......