C++17 filesystem

C++17新出了filesystem库用于对文件和目录进行操作。在以前使用C++的时候,一旦遇到要遍历目录的操作都得用Unix函数,而且还必须考虑和Windows的兼容性,可以说C++在这一方面做的很差。但是C++17中的filesystem解决了这个问题。

其CppReference在这里

C++17新库

在C++17中出现了一些新的库,分别是:

  • string_view
  • variant
  • filesystem
  • charconv
  • 工具库中新增加了any
  • 数学特殊函数cmath(这个是老库,但是加了新功能)

本文只列出一些常用方法或概述,具体用法见cppreference。

Clean C++笔记

这里是《Clean C++》(C++代码整洁之道)的笔记。比起《Clean Code》来说,本书更多地讲述了如何使用C++技术来达到“Clean Code”的方法,我觉得很值得参考。本书和这里的所有代码,例子均在C++11及其以后的标准下编写。

CMake中使用PkgConfig

为什么要使用PkgConfig

有时候某些第三方库没有提供Cmake的支持,没有办法使用find_package命令找到。这个时候就可以尝试使用pkg-config。大部分的第三方库都会支持pkg-config

Mac下如何在IntelliJ上开发Android

这里介绍如何在Mac下使用IntelliJ来开发Adnroid程序。因为自己已经安装了IDEA了,所以就不打算再安装Android Studio了。

C++11随机数生成器

C++11提供了很多的随机数生成器,可以使用均匀分布,正态分布等方法进行随机。

要想生成随机数,请包含random头文件

C++11的随机数生成比C语言要麻烦,也好用地多。主要有以下概念:

  • 随机数生成器:用来生成随机数的类,相比于C语言,C++通过提供不同的随机数生成器来提供不同的随机数生成算法,让用户对随机数生成的底层算法有更好的选择。
  • 随机数分布:用于按照一定的分布来产生随机数。本质上是通过限定或修改随机数生成器产生的随机数来得到结果的,所以需要一个随机数生成器。

一般来说,得到一个随机数的方式如下:

  1. 首先得得到一个随机数生成器
  2. [可选] 然后可以采用随机数引擎适配器来对生成器进行一些操作
  3. 最后将生成的随机数传入随机数分布来得到随机数。

比较典型的过程如下:

1
2
3
4
5
default_random_engine engin;    //得到一个随机数生成器
engin.seed(time(nullptr)); //传入种子
uniform_int_distribution<int> dist(1, 10);  //得到一个随机分布
for(int i=0;i<100;i++)
    cout<<dist(engin)<<endl;    //随机分布利用随机数生成器生成随机数

C++11日期与时间🕒

C++11为了表示时间,新增加了chrono库。这是一个比原本C库更加好用的时间表达库。 想要使用chrono,请包含chrono头文件并且使用命名空间chrono