相比于C风格的强制类型转换,C++新增了关键字 static_cast
、dynamic_cast
、const_cast
、reinterpret_cast
,用于强制类型转换。
新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。
1. static_cast
用于非多态类型转换 (静态转换),任何标准转换都可以用它,但是不能用于两个不相关的类型转换。与C旧式转型基本相同。
std::future
是C++11 的一个模板类,提供了一种用于访问异步操作结果的机制。可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段。
设想这样的情况,你希望一个线程进行工作A,同时你在做一些其他的工作,你希望在某个特定的时间获取那个工作A的结果。在c++11,这个可以轻松被 std::future
实现。而由于它是一个模板类,可以返回任何类型的结果。
std::condition_variable
是 C++11 多线程编程中的条件变量。
一般用法: 线程 A 等待某个条件并挂起,直到线程 B 设置了这个条件,并通知条件变量,然后线程 A 被唤醒。
1 | option(BUILD_VISUALIZATIONS "Build visualization, default OFF" OFF) |
直接从 rarlab 下载安装包
通过命令行下载
1 | wget https://www.rarlab.com/rar/rarlinux-x64-6.0.1.tar.gz # 64位 |
1 | tar zxvf rarlinux-x64-6.0.1.tar.gz |
1 | rar x xxx.rar # Extract files with full path |
clang
对C++进行格式化安装clang-format
1 | sudo apt-get install -y clang-format |
简单使用
1 | clang-format -i <file_to_format> |
指定 style
1 | clang-format -i --stlye="{key: value, ...}" |
指定 style 文件
1 | clang-format -i --stlye=file:<style_file> |
编写脚本 clang_format.bash
对文件夹下所有c++代码格式化
1 | find . -regextype egrep -regex ".*\.(c|cc|h|hh)$" | xargs clang-format -i |
在需要格式化的路径下运行脚本
1 | ./clang_format.bash |