0%

相比于C风格的强制类型转换,C++新增了关键字 static_castdynamic_castconst_castreinterpret_cast ,用于强制类型转换。

新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。

1. static_cast

用于非多态类型转换 (静态转换),任何标准转换都可以用它,但是不能用于两个不相关的类型转换。与C旧式转型基本相同。

阅读全文 »

template < class T, class Alloc = allocator<T> > class vector;

std::vector 简介

std::vector 是C++标准库里封装好的动态大小数组的顺序容器,能够存放各种类型的对象。

与数组 array 一样, vector内存空间的地址是连续的。这意味着可以通过下标索引的方式获取到对应的元素,所以访问其元素的效率非常高,从其末端添加或删除元素的效率也相对较高。而对于涉及在非结束位置插入或删除元素的操作,它们的性能比其他操作差,效率较低。

阅读全文 »

std::future 是C++11 的一个模板类,提供了一种用于访问异步操作结果的机制。可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段。

设想这样的情况,你希望一个线程进行工作A,同时你在做一些其他的工作,你希望在某个特定的时间获取那个工作A的结果。在c++11,这个可以轻松被 std::future 实现。而由于它是一个模板类,可以返回任何类型的结果。

阅读全文 »

CMake中设置编译选项

1
2
3
4
5
6
7
8
9
10
11
option(BUILD_VISUALIZATIONS "Build visualization, default OFF" OFF)
message("BUILD_VISUALIZATIONS is ${BUILD_VISUALIZATIONS}")


# 可以跟build type关联
# if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG)

if(BUILD_VISUALIZATIONS)
add_definitions(-DBUILD_VISUALIZATIONS)
# target_compile_definitions(${project_name} PRIVATE BUILD_VISUALIZATIONS)
endif()
阅读全文 »

下载rar软件安装包

  1. 直接从 rarlab 下载安装包

  2. 通过命令行下载

    1
    2
    wget https://www.rarlab.com/rar/rarlinux-x64-6.0.1.tar.gz  # 64位
    wget https://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz # 32位

安装

1
2
3
4
tar zxvf rarlinux-x64-6.0.1.tar.gz
cd rar
sudo make
sudo make install

解压缩

1
2
rar x xxx.rar  # Extract files with full path
rar e xxx.rar # Extract files without archived paths
阅读全文 »

使用clang对C++进行格式化

  • 安装clang-format

    1
    sudo apt-get install -y clang-format
  • 简单使用

    1
    2
    clang-format -i <file_to_format>
    # clang-format -i test.cc
  • 指定 style

    1
    2
    clang-format -i --stlye="{key: value, ...}"
    # clang-format -i --stlye="{BasedOnStyle: Google, IndentWidth: 2}"
  • 指定 style 文件

    1
    2
    clang-format -i --stlye=file:<style_file>
    # clang-format -i --style=file:.clang-format
  • 编写脚本 clang_format.bash 对文件夹下所有c++代码格式化

    1
    2
    3
    4
    find . -regextype egrep -regex ".*\.(c|cc|h|hh)$" | xargs clang-format -i

    # skip some paths
    # find . -regextype egrep -regex ".*\.(c|cc|h|hh)$" -not -path '*/install/*' -not -path '*/build/*' -not -path '*/log/*' -not -path '*/deps/*'| xargs clang-format -i
  • 在需要格式化的路径下运行脚本

    1
    ./clang_format.bash
阅读全文 »

安装ftp和vsftpd

1
2
sudo apt-get install ftp
sudo apt-get install vsftpd

启动服务

1
2
3
4
5
6
7
8
9
10
# 使用vsftpd软件,主要包括如下几个命令:

# 启动ftp
service vsftpd start

# 停止ftp
service vsftpd stop

# 重启ftp
service vsftpd restart
阅读全文 »