c++高级用法
1|0lambda函数的两种用法
- function
- 如果文件存在,删除文件
2|0goto
- a的值等于15时,程序会跳过迭代并继续执行下一次循环
3|0其他编译单元就可以直接调用
4|0测试
boost.cpp
need2test.h
5|0-std=c++11
禁止对象的拷贝与赋值delete
6|0-std=c++14
C++14引入了二进制字面量,也引入了分隔符
std::make_unique
多读、单写锁
std::exchange比swap更高效
std::quoted 给字符串添加双引号
inline
允许同一个函数或变量的定义出现在多个编译单元中
7|0-std=c++17
构造函数模板推导
结构化绑定
折叠表达式
C++17引入了constexpr lambda表达式,可以用于在编译期进行计算。
有以下限制
函数体不能包含汇编语句goto语句、label、try块、静态变量、线程局部存储、
没有初始化的普通变量,不能动态分配内存,不能有new delete等,
不能虚函数
namespace嵌套
__has_include预处理表达式
std::variant
类似union的功能,但比union更高级
std::optional
- 让函数返回对象指针,异常情况下返回nullptr
std::any
C++17引入了any可以存储任何类型的单个值
std::string_view
if-switch语句初始化
折叠表达式
新增Attribute
- [[fallthrough]],用在switch中提示可以直接落下去,不需要break,让编译期忽略警告
- [[nodiscard]] :表示修饰的内容不能被忽略,可用于修饰函数,标明返回值一定要被处理
- [[maybe_unused]] :提示编译器修饰的内容可能暂时没有使用,避免产生警告
C++17使用as_const可以将左值转成const类型
8|0-std=c++20
默认生成一系列的比较运算符
即:==,!=,<,>,<=,>=
自定义时有三种可用的返回类型:
- std::strong_ordering:强比较,严格按照比较的顺序、方式来进行,不能从下面两个转回,特别注意的是它不区分等价值。
- std::weak_ordering:弱比较,对比较的大小写,可以对等价的字符串用某种方式区别
- std::partial_ordering:偏序比较,其实就是自定义,把直观上不可能比较的对象通过某种方式来进行比较
9|0模板
- 可以使用省略号运算符 (...) 定义采用任意数量的零个或多个类型参数的模板:
- C++ 模板支持非类型参数,也称为值参数
- size_t 值在编译时作为模板参数传入,必须是 const 或 constexpr 表达式。
- 模板作为模板参数
- 默认模板自变量
- 例如,std::vector 模板有一个用于分配器的默认自变量:
__EOF__

本文作者:InsiApple
本文链接:https://www.cnblogs.com/InsiApple/p/17295397.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/InsiApple/p/17295397.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:InsiApple,转载请注明原文链接:https://www.cnblogs.com/InsiApple/p/17295397.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)