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

郑州旅游网站制作ppt设计大赛

郑州旅游网站制作,ppt设计大赛,福州企业网站建设专业服务,seo网站推广优化公司所谓现代 c,指的是从 c11 开始的 c,从 c11 开始,加入一些比较现代的语言特性和改进了的库实现,使得用 c 开发少了很多心智负担,程序也更加健壮,“看起来像一门新语言”。 从 c11 开始,每 3 年发…

所谓现代 c++,指的是从 c++11 开始的 c++,从 c++11 开始,加入一些比较现代的语言特性和改进了的库实现,使得用 c++ 开发少了很多心智负担,程序也更加健壮,“看起来像一门新语言”。

从 c++11 开始,每 3 年发布一个新版本,到今年(2024)已经有 5 个版本了,分别是 c++11、c++14、c++17、c++20、c++23,这 5 个版本引入了上百个新的语言特性和新的标准库特性。


c++11 新特性

c++11 是一个 major 版本,现代 c++ 开天辟地的版本,有特别多新东西。

新的语言特性[1]:

  • 内存模型——一个高效的为现代硬件设计的底层抽象,作为描述并发的基础
  • auto 和 decltype——避免类型名称的不必要重复
  • 范围 for——对范围的简单顺序遍历
  • 移动语义和右值引用——减少数据拷贝
  • 统一初始化—— 对所有类型都(几乎)完全一致的初始化语法和语义
  • nullptr——给空指针一个名字
  • constexpr 函数——在编译期进行求值的函数
  • 用户定义字面量——为用户自定义类型提供字面量支持
  • 原始字符串字面量——不需要转义字符的字面量,主要用在正则表达式中
  • 属性——将任意信息同一个名字关联
  • lambda 表达式——匿名函数对象
  • 变参模板——可以处理任意个任意类型的参数的模板
  • 模板别名——能够重命名模板并为新名称绑定一些模板参数
  • noexcept——确保函数不会抛出异常的方法
  • override 和 final——用于管理大型类层次结构的明确语法
  • static_assert——编译期断言
  • long long——更长的整数类型
  • 默认成员初始化器——给数据成员一个默认值,这个默认值可以被构造函数中的初始化所取代
  • enum class——枚举值带有作用域的强类型枚举

新的标准库特性[1]:

  • unique_ptr 和 shared_ptr——依赖 RAII 的资源管理指针
  • 内存模型和 atomic 变量
  • thread、mutex、condition_variable 等——为基本的系统层级的并发提供了类型安全、可移植的支持
  • future、promise 和 packaged_task,等——稍稍更高级的并发
  • tuple——匿名的简单复合类型
  • 类型特征(type trait)——类型的可测试属性,用于元编程
  • 正则表达式匹配
  • 随机数——带有许多生成器(引擎)和多种分布
  • 时间——time_point 和 duration
  • unordered_map 等——哈希表
  • forward_list——单向链表
  • array——具有固定常量大小的数组,并且会记住自己的大小
  • emplace 运算——在容器内直接构建对象,避免拷贝
  • exception_ptr——允许在线程之间传递异常

c++14 新特性

c++14 是一个 minor 版本,没什么重要的新特性,主要是在给 c++11 打补丁,为使用者 “带来极大方便”,实现 “对新手更为友好” 这一目标。

新的语言特性[2]:

  • 泛型的lambda
  • Lambda捕获部分中使用表达式
  • 函数返回类型推导
  • 另一种类型推断:decltype(auto)
  • 放松的constexpr函数限制
  • 变量模板
  • 聚合类成员初始化
  • 二进制字面量: 0b或0B 前缀
  • 数字分位符
  • deprecated 属性

新的标准库特性[2]:

  • 共享的互斥体和锁: std::shared_timed_mutex
  • 元函数的别名
  • 关联容器中的异构查找
  • 标准自定义字面量
  • 通过类型寻址多元组
  • 较小的标准库特性: std::make_unique, std::is_final 等

c++17 新特性

c++17 是一个 major 版本。

新的语言特性[3]:

  • 构造函数模板参数推导——简化对象定义
  • 推导指引——解决构造函数模板参数推导歧义的显式标注
  • 结构化绑定——简化标注,并消除一种未初始化变量的来源
  • inline 变量——简化了那些仅有头文件的库实现中的静态分配变量的使用
  • 折叠表达式——简化变参模板的一些用法
  • 条件中的显式测试——有点像 for 语句中的条件
  • 保证的复制消除——去除了很多不必要的拷贝操作
  • 更严格的表达式求值顺序——防止了一些细微的求值顺序错误
  • auto 当作模板参数类型——值模板参数的类型推导
  • 捕捉常见错误的标准属性——[[maybe_unused]]、[[nodiscard]] 和 [[fallthrough]]
  • 十六进制浮点字面量
  • 常量表达式 if——简化编译期求值的代码

新的标准库特性[3]:

  • optional、any 和 variant——用于表达“可选”的标准库类型
  • shared_mutex 和 shared_lock(读写锁)和 scoped_lock
  • 并行 STL——标准库算法的多线程及矢量化版本
  • 文件系统——可移植地操作文件系统路径和目录的能力
  • string_view——对不可变字符序列的非所有权引用
  • 数学特殊函数——包括拉盖尔和勒让德多项式、贝塔函数、黎曼泽塔函数

c++20 新特性

c++20 是一个 major 版本,有很重要的更新,“The Big Four”,即四个重要的特性,分别是:概念、范围、协程和模块。

新的语言特性[4]:

  • coroutines
  • concepts
  • designated initializers
  • template syntax for lambdas
  • range-based for loop with initializer
  • [[likely]] and [[unlikely]] attributes
  • deprecate implicit capture of this
  • class types in non-type template parameters
  • constexpr virtual functions
  • explicit(bool)
  • immediate functions
  • using enum
  • lambda capture of parameter pack
  • char8_t
  • constinit

新的标准库特性[4]:

  • concepts library
  • synchronized buffered outputstream
  • std::span
  • bit operations
  • math constants
  • std::is_constant_evaluated
  • std::make_shared supports arrays
  • starts_with and ends_with on strings
  • check if associative container has element
  • std::bit_cast
  • std::midpoint
  • std::to_array

c++23 新特性

c++23 是一个 minor 版本。

新的语言特性[5]:

  • 新语言功能特性测试宏
  • 显式对象形参,显式对象成员函数(推导 this)
  • if consteval / if not consteval
  • 多维下标运算符(例如 v[1, 3, 7] = 42;)
  • static operator()
  • static operator[]
  • auto(x):语言中的衰退复制
  • lambda 表达式上的属性
  • 可选的扩展浮点类型:std::float{16|32|64|128}_t 和 std::bfloat16_t。
  • (有符号)std::size_t 字面量的字面量后缀 ‘Z’/‘z’
  • 后缀
  • #elifdef、#elifndef 与 #warning
  • 通过新属性 [[assume(表达式)]] 进行假设
  • 具名通用字符转义
  • 可移植源文件编码为 UTF-8
  • 行拼合之前修剪空白

新的标准库特性[5]:

  • 新的库功能特性测试宏
  • 新的范围折叠算法
  • 字符串格式化改进
  • “平铺(flat)”容器适配器:std::flat_map、std::flat_multimap、std::flat_set、std::flat_multiset
  • std::mdspan
  • std::generator
  • std::basic_string::contains, std::basic_string_view::contains
  • 禁止从 nullptr 构造 std::string_view
  • std::basic_string::resize_and_overwrite
  • std::optional 的单子式操作:or_else、and_then、transform
  • 栈踪迹(stacktrace)库
  • 新的范围算法
  • 新的范围适配器(视图)
  • 对范围库的修改
  • 对视图的修改
  • 标记不可达代码:std::unreachable
  • 新的词汇类型 std::expected
  • std::move_only_function
  • 新的带有程序提供的固定大小缓冲区的 I/O 流 std::spanstream
  • std::byteswap
  • std::to_underlying
  • 关联容器的异质擦除

参考

[1] Bjarne Stroustrup. c++11:感觉像是门新语言. Cpp-Club. Available at : https://github.com/Cpp-Club/Cxx_HOPL4_zh/blob/main/04.md, 2023-6-11.

[2] Wikipedia. c++14. Available at: https://zh.wikipedia.org/wiki/c++14.

[3] 玩转Linux内核. 快速入门c++17:了解最新的语言特性和功能. Available at: https://zhuanlan.zhihu.com/p/664746128, 2023-11-06.

[4] AnthonyCalandra. modern-cpp-features:CPP20. Available at: https://github.com/AnthonyCalandra/modern-cpp-features/blob/master/CPP20.md, 2023-3-19.

[5] cppreference. c++23. Available at: https://zh.cppreference.com/w/cpp/23, 2024-3-3.

http://www.yayakq.cn/news/664937/

相关文章:

  • 扮家家室内设计网东营网站建设课程定位优化
  • 视频网站开发是什么wordpress支付可见公众号收款
  • 浏阳网站建设外贸公司网站建设方案
  • 黑龙江做网站物流公司网站怎么做
  • 房地产 东莞网站建设国外做调灵风暴的网站
  • 英文网站注意事项乐清网站改版公司
  • 企业网站开发合同一万并发量的视频网站建设
  • 网站推广和优化的原因西安学校网站建设
  • 查网站权重本地化吃喝玩乐平台网站可以做吗
  • 深圳高端网站定制公司学设计网站推荐
  • wordpress 重新安装杭州网站优化效果
  • 如何创建网站系统教程天煜科技网站建设
  • uzi视频网站谁做的网站上的网站地图怎么做
  • 如何做好网站外链湖南教育平台网站建设
  • 湘潭网站建设 地址磐石网络建设网站明细报价表
  • 定制化网站开发公司搜狗网页游戏大厅
  • 备案网站名称有什么用wordpress商城对接支付接口
  • wordpress博客三栏主题湖北seo网站推广
  • 查网站域名备案查询怎样套用wordpress模板
  • 上海网站建设公司 红威中通物流企业网站建设书
  • 无法更新网站主页 dedecms网站建设_聊城
  • 帮人做网站好挣吗江西网络推广外包
  • 导购网站 icp备案要求做企业网站能赚钱吗?
  • 罗湖做网站的海南三亚做网站
  • 长安网站建设制作公司学做网站要什么基础
  • 网站建设买了服务器后怎么做江苏苏州有什么好玩的
  • 企业营销型网站建设图片企业购物网站开发
  • 潮汕网站建设antnw做微网站的第三方登录
  • php网站开发实战开发12380 举报网站建设
  • 万网有跟企业做网站吗优化外贸网站