C++11
特性
Lambda
参考资料
https://zh.cppreference.com/w/cpp/language/lambda
https://blog.csdn.net/qq_34199383/article/details/80469780
[ 捕获 ] ( 形参 ) -> ret { 函数体 } |
使用场景一
以sort为代表的函数 需要传入函数的函数
// 原版 |
使用场景二
auto add = [](int a, int b){return a + b;}; |
User-defined literals
using namespace std::chrono_literals; |
第一次看到上面代码 还疑惑了会 点了下ms发现是重载. 才知道这是c++11的特性…
库
智能指针
自己简单实现了一下智能指针
Counter作为计数类 当调用AddRefCopy
时计数值增加Release
时计数值减少
Release
计数值减少时判断shared_count_
如果为0则调用Dispose
删除掉保存的指针之后接着调用Destroy
删除掉自己
SharedPtr从from
拷贝构造时, 内部Counter指针从from
调用AddRefCopy
获得 实现拷贝构造计数值增加, 两者共用一个Counter
SharedPtr从from
赋值时, 首先对自己保有的Counter指针调用Release
减少计数值 然后调用from
的AddRefCopy
获得新的Counter
SharedPtr析构时调用Counter的Release
减少计数值
// |
async
|
mutex condition
std::function 和 std::bind
# |
# |
C++14
特性
0b010101 二进制表达
int a = 0b111111111; |
库
C++17
特性
结构化绑定
|
初始化语句不再局限于for语句 if和switch也能使用 while: ???
int Init() |
至于while为什么没有 https://stackoverflow.com/questions/59985550/while-statement-with-initializer
说是C++已经足够复杂了, 每次增加复杂度的时候都要足够的小心, 让这些复杂度增加的合理而自然.
如果对while增加初始化语句, 那么for? 干脆删掉while吧
库
optional
optional
std::optional<std::string> Foo(bool b) |
string_view
提供了对已经被其他持有所有权的字符串
的指针和长度的包装 仅仅提供包装
int main() |
C++20
库
协程库
// SET(CMAKE_CXX_FLAGS "-fcoroutines -std=c++2a") |
协程一大用途就是可以方便的将多个异步调用转换为串行化的同步调用
format库
将项目中的include和src拷贝出放入format文件夹添加到项目根目录
format文件夹新增CMakeLists.txt
SET(FORMAT_SRC |
项目根CMakeLists.txt增加如下三行
include_directories(format/include) |
即可使用fmt库 相关语法也非常简单
const char* errnum; |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。