stdafx与stdafx.h食用方法

HighPerformanceRobot

2019-05-10 20:01:16

Personal

## 注意:本篇内容仅针对Windows7,Dev-C++!!! ~~因为Mac OS和Linux都没用过~~ ### 1.文件位置 stdafx文件不能有后缀!文件图标必须是一片空白!不能有内容! stdafx.h只能有.h后缀! 这两个文件都保存在Dev-C++的目录下,路径为: 系统默认(即安装Dev-C++的时候没有更改安装目录)32位: C:\Program Files\Dev-Cpp\MinGW32\include 系统默认(即安装Dev-C++的时候没有更改安装目录)64位: C:\Program Files (x86)\Dev-Cpp\MinGW64\include 32位: Dev-C++安装目录\MinGW32\include 64位: Dev-C++安装目录\MinGW64\include ### 2.食用方法 直接复制到目录下,在之后的工程中就可以使用啦! 用法(有复制stdafx中的内容): ```cpp #include<stdafx> ``` 如果你只复制了stdafx.h的话,那么你就必须要加.h后缀。 在正式使用前推荐先将stdafx.h文件在Dev-C++中先按F9编译一下,这样可以省去不少时间,在以后工程中引用的时候就不需要引用一次编译一次了。 ### 3.文件说明 高精度除法已经修复。 转载请注明出处。 ### 4.函数用法 说明:int、long long等整数类型以下皆称为“整数”。 1. INT: 高精度类,包含绝大多数普通int的操作。 2. 各个INT函数: ```cpp INT gcd(INT x,INT y) ``` 最大公约数不解释。 ```cpp INT pow(INT base_num,INT exponent) ``` 快速幂,base_num是底数,exponent是指数。 ```cpp INT pow(INT base_num,INT exponent,INT mod) ``` 同上,多了个mod而已。 ```cpp INT sqrt(INT x) ``` 二次根,向下取整。 3. 各个数学函数: ```cpp template<typename T>T gcd(T x,T y) ``` 适用于整数的gcd,具体用法见文末。 ```cpp template<typename T>T lcm(T x,T y) ``` 最小公约数函数,适用于整数。 ```cpp template<typename T>T pow(T base_num,T exponent) ``` 快速幂。 ```cpp template<typename T>T pow(T base_num,T exponent,T mod) ``` 同上,多了个mod。 ```cpp template<typename T>T factorial(T x) ``` 阶乘函数,适用于大部分C++原有类型(除了STL)。 ```cpp template<typename T>T square(T x) ``` 没什么用,返回平方值而已。 ```cpp template<typename T>T lowbit(T x) ``` 一般是树状数组用的,返回x二进制下末尾0的个数。 ```cpp template<typename T>double distance(T x_1,T y_1,T x_2,T y_2) ``` 求两点间距离函数。 ```cpp template<typename T>int sgn(T x,T y) ``` 符号函数,大于0返回1,等于0返回0,小于零返回-1。 ```cpp bool is_prime(int n) ``` 判断素数函数,效率较好。 ```cpp template<typename T>void make_prime_table(int length,T f[]) ``` 素数表函数(埃筛),length是长度,f是标记数组。 ```cpp void read(LL &num) ``` 快读函数,整型。 ```cpp void read(double &num) ``` 快读函数,浮点型。 ```cpp template<typename T>void read(int l,int r,T array[]) ``` 快读函数,l为左下限,r为右下限,array是要读入数据的数组。 ```cpp template<typename T>void write(T num) ``` 快输函数,整型。 ```cpp int find(int x,int pre[]) ``` 并查集专用函数,pre是并查集数组。 ```cpp int join(int x,int y,int pre[]) ``` 同上。 ```cpp LL random() ``` 随机数函数,数据范围更大。 ```cpp LL random(LL mod) ``` 同上,加了个mod而已。 ```cpp ULL urandom() ``` 保证返回数据为非负数。 ```cpp ULL urandom(LL mod) ``` 同上,加了个mod而已。 注:template用法: 所有有加template的函数,可以传入大部分的C++原有类型(除非有注明特别适用于某种类型),用法和普通函数并无区别。