stdafx与stdafx.h食用方法
HighPerformanceRobot
2019-05-10 20:01:16
## 注意:本篇内容仅针对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++原有类型(除非有注明特别适用于某种类型),用法和普通函数并无区别。